Articles of 表示

passportjs LocalStrategy允许比默认的用户名和密码更多的参数吗?

我是新来的JavaScript,节点和passportjs。 对不起如果这是不正确的。 我想在我的护照本地策略中使用3个参数: 用户名,电子邮件,密码 。 可能吗? 如果这样怎么样? 根据passportjs的说法:“默认情况下,LocalStrategy希望能够在名为username和password的参数中find凭据,如果你的站点更喜欢以不同的方式命名这些字段,可以使用选项来改变默认值。 但是我可以添加更多参数吗? 我试过这个: passport.use('local-signup', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email usernameField : 'username', emailField : 'email', passwordField : 'password', passReqToCallback : true // allows us to pass back the entire request to the callback }, function(req, username, email, […]

Node.js,Express和dependency injection

我在一个node.js项目的早期阶段,我正在寻求改善整个应用程序的组织。 在过去,我使用了Symfony2(PHP),现在我在Angular中编写了很多代码,这两个代码都非常依赖DI。 所以,我非常喜欢在我的node.js项目中应用相同的原则。 我知道像Rewire这样的软件包的存在,但现在我想尝试DI方法。 问题是, 如何达到一个平衡,以保持轻量级的感觉,使节点与一个经过良好testing的dependency injection的应用程序的坚实 (我知道,经过充分testing是什么给了坚实;-))。 节点模块 其中一个问题就是如何pipe理外部模块,如果某个对象需要fs模块怎么办? 正如Vojta Jina(来自AngularJS)在这篇文章中所述 : 所以现在最适合我的方式就是这样的:模块是无状态的。 它们只包含类/函数/常量的定义。 所以,我想我必须注入一切: function Foo(fs) { this.fs = fs; } Foo.prototype.doSomething: function () { // this.fs… }; module.exports = Foo; 某处: var fs = require('fs'); var Foo = require('./Foo'); var foo = new Foo(fs); foo.doSomething(); performance 由于Express使用apply()来调用处理程序,所以上下文丢失,我们不能使用this 。 所以我们留下这些: // foo.js function […]

Express节点作为启用pushState的服务器提供没有任何path前缀的任何静态资源

我正在用Ember.js或Backbone.js作为前端MVC,express.js(node.js)作为后端服务器构build单页Web应用程序。 server / app.js代码简而言之 app.use(bodyParser.json()); app.use(express.static(path.join(__dirname, '..', 'client'))); app.get('*', function(req, res) { return res.render('base'); (will sendFile (client/index.html) ) }); 它会加载所有公共资产的客户端/文件夹,客户端文件夹结构如下所示 – client — index.html ( will be rendered as always ) — app (front end mvc code) — assets — images — styles 当前端MVC启用html5 pushstate时,express服务器始终都提供所有匹配的路由,当页面刷新或者url被手动插入到浏览器中时,它将一如既往地呈现index.html。 client / index.html (示例代码) <link rel="stylesheet" href="assets/styles/reset.css"> <link rel="stylesheet" href="assets/styles/base.css"> […]

Node&Mongoose – 保存时出错:TypeError:Object.keys在非对象上调用

在下面的用户架构中有一个foobar.events字段,我试图推送新的哈希(从API POST请求接收)到。 var userSchema = mongoose.Schema({ foobar: { id : String, token : String, email : String, name : String, events : [{ action : String, timestamp : Date, user_xid : String, type : {type: String}, event_xid : String }] } }); 这是Express路线的逻辑: app.post('/foobar/post', function(req, res) { var jb_user_xid = req.body['events'][0]['user_xid']; var jb_timestamp = req.body['events'][0]['timestamp']; […]

如何根据“模式”过滤JSON对象

我使用node.js和express / koa构build了一个RESTful API。 我想过滤JSON数据input – 出于安全原因,以及只有需要的业务特定的属性。 过滤后,业务特定的validation发生。 我如何扔掉不需要的JSON / JS对象属性 – 即属性不在我的数据库架构以及空属性? 根据这个定义架构和filter? 使用例如https://github.com/alank64/json-schema-filter 任何可configuration的过滤可用?

expressjs路由中的可选扩展

我想有一个可选的扩展名,如.xml或.csv或.json (默认,没有扩展将返回JSON)。 app.get('/days-ago/:days(.:ext)?', function(req, res) { 这似乎不工作,有什么我做错了? GET /days-ago/7.xml GET /days-ago/7.csv GET /days-ago/7.json GET /days-ago/7

在login屏幕中禁用stormpath的创build帐户选项

我想在stormpathlogin屏幕中禁用创build帐户。 对API的调用应该已经从用户authentication到应用程序。 我尝试将stormpathEnableRegistration设置为false,但注册function仍处于启用状态。 app.use(stormpath.init(app, { apiKeyFile: config.stormpathapi.apiKeyFile, application: config.stormpathapi.application, secretKey: config.stormpathapi.secretKey, sessionDuration: 1000 * 60 * 30, enableAutoLogin: true, enableUsername: true, stormpathEnableRegistration: false })); 谢谢!

Express JS Keep Session Alive重启

我试图重新启动,并保持会话活着使用nodemon,但是当你重新启动会话被破坏..我不知道是否有任何方法来保持与nodemon或其他节点js库会话生活。 脚本“:{//”开始“:”节点./bin/www“”开始“:”nodemon ./bin/www“} 谢谢你的时间

相对URI为node.js请求库

我有以下代码,node.js无法parsingurl: var teamURL = '/users/' + user._id + '/teams'; var req = request({ url: teamURL, json: true }, function(error, response, body) { if (!error && response.statusCode == '200') { //var teams = JSON.stringify(body); var teams = body; res.render('userHome.html', { user: user, teams: teams }); } else { console.error(error); next(error); } }); 是否有一个好的方法来使用服务器端node.js Express应用程序的请求库的相对path/url?

为什么node-sass-middleware不工作?

我已经在我的快速应用程序上安装了node-sass-middleware模块,但是我没有得到这个工作,只是因为中间件读取了不正确的源代码,所以当我debugging控制台日志时: GET / 200 558.983 ms – 4651 source: /home/karim/Snippets/my-financial/public/stylesheets/sass/stylesheets/main.sass dest: /home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css read: /home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css 哪两个目录是错误的,为什么中间件在source / dest ( ..public/stylesheets/sass/ )和.sass file / .css file ( main.sass和main.css )之间添加stringstylesheets/ ? 我有我的app.js里面的这个configuration: var sassMiddleware = require('node-sass-middleware'); … … var app = express(); app.use(sassMiddleware({ src: path.join(__dirname, 'public/stylesheets/sass'), dest: path.join(__dirname, 'public/stylesheets'), debug: true, indentedSyntax: true, outputStyle: 'compressed' })); 显然这不是编译任何东西,因为目录是错误的。 在..public/stylesheets/sass/文件夹里面,我只有一个文件,我想要编译并移动sass/文件夹之外的结果..public/stylesheets/ […]