NodeJS V8将附加parameter passing给callback函数

我使用NodeJS,ExpressJS,MongoDB(使用Mongoose)编写应用程序… 一切工作完美,但是,当我有一个循环的抓取logging和做的结果,如下所示: for(var i = 0; i < 10; i++) { recods.findOne({number: i}, function(err,doc){ … }); } callback函数范围内的variables“i”通过引用传递,结果不是所需的。 当callback被调用时,循环已经运行并且variables已经改变。 如果我尝试将参数作为匿名函数传递,则不起作用,因为它会replace所需的参数: for(var i = 0; i < 10; i++) { records.findOne({number: i}, (function(err,doc){ … })(i)); } 这样,我就失去了“呃,doc”的论点, 我能做些什么来解决这个大问题?

我如何使用callback访问nodejs中的mongodb计数结果?

如何访问nodej中的mongodb计数结果,以便asynchronous请求可以访问结果? 我可以得到结果并更新数据库,但是asynchronous请求无法访问variables,或者variables是空的,当下一个asynchronous请求发生时,variables似乎会更新。 该请求不得等待查询完成,并且下一个请求将填充上一个请求的variables。 testOne.increment = function(request) { var MongoClient = require('mongodb').MongoClient, format = require('util').format; MongoClient.connect('mongodb://127.0.0.1:27017/bbb_tracking', function(err, db) { if (err) throw err; collection = db.collection('bbb_tio'); collection.count({vio_domain:dom}, function(err, docs) { if (err) throw err; if (docs > 0) { var vio_val = 3; } else { var vio_val = 0; } if (vio_val === 3) { […]

如何序列化/反序列化多个本地策略

我如何序列化/反序列化多个本地策略:我已经尝试过使用PassportJS中的多个本地策略,但不成功。 这是我的代码: passport.use('user', new LocalStrategy( function(username, password, done) { UserSchema.findOne({ username: username }, function(err, user) { // … return done(null, user); }); })); passport.use('admin', new LocalStrategy( function(username, password, done) { adminSchema.findOne({ username: username }, function(err, user) { // … return done(null, user); }); })); passport.serializeUser(function(user, done){ done(null, user.id); }); passport.deserializeUser(function(id, done){ adminSchema.findById(id, function(err, user){ if(err) […]

将许多文档串起来

我正在尝试使用节点和续集来创build项目和任务之间的多对多关联。 我不知道如何创build新的“任务”与variables名称,可以作为一个数组积累为project.setTasks函数,因为这里的文档给出了作为一个例子ALOT的细节丢失。 http://sequelizejs.com/documentation#associations-many-to-many 这里是他们给的例子: Project.hasMany(Task) Task.hasMany(Project) Project.create()… Task.create()… Task.create()… // save them… and then: project.setTasks([task1, task2]).success(function() { // saved! })

全局对象/作用域和未定义的循环引用

我不确定我是否了解这几个经验的结果: 经验n°1(在新的命令行中): > _ ReferenceError: _ is not defined at repl:1:2 at REPLServer.self.eval (repl.js:110:21) at Interface.<anonymous> (repl.js:239:12) at Interface.EventEmitter.emit (events.js:95:17) at Interface._onLine (readline.js:202:10) at Interface._line (readline.js:531:8) at Interface._ttyWrite (readline.js:760:14) at ReadStream.onkeypress (readline.js:99:10) at ReadStream.EventEmitter.emit (events.js:98:17) at emitKey (readline.js:1095:12) > global { global: [Circular], … _: [Circular], } > _ { global: [Circular], … _: [Circular], […]

在openShift节点版本上meteor

meteor(v0.6.6.3)在openShift上,定制openShift nodeJS为0.10.21,mongoDB 2.2 我试图得到一个运行在openShift上的meteor应用程序。 我已经将nodeJS从openShift默认值0.10.5升级到了nodeJS 0.10.21,因为meteor最低需要这个nodeJS版本。 如果我打开一个ssh shell openShift,并让我节点版本比它显示我正确的0.10.21(节点 – 版本)的升级版本。 但是,如果我将启动meteor应用程序,他们会看到0.10.5的nodeJS版本(控制台用'process.version'注销),并再次重新启动… 有人能指出我可以看到发生了什么或者我做错了什么的方向。 谢谢

Mongoose是否可以自动从Mongodb中提取模式?

我还在学习Mongodb,Nodejs和Mongoose,请原谅我的无知,如果这个问题缺乏理解。 我发现每个Mongodb集合都需要在Mongoose中parsing才有点多余。 具体而言,每个Mongodb集合的所有字段及其types需要在Mongoose的模式中陈述。 所以如果我有一个包含共享相同字段的文档的集合,例如: > db.people.find() { "_id" : ObjectId("1111"), "name" : "Alice", "age": 30 } { "_id" : ObjectId("2222"), "name" : "Bob", "age": 25 } { "_id" : ObjectId("3333"), "name" : "Charlie", "age": 40 } Mongoose + Nodejs连接到这个Mongodb的方式 var mongoose = require('mongoose'); var personSchema = new mongoose.Schema({ name : String, age : Number }); […]

Heroku的应用程序停止响应几个请求后

我有一个应用程序运行在一个单一的Dyno和自由层的PostgreSQL附加(到目前为止足够的开发目的)。 每当我将应用程序部署到Heroku上,或者模拟与工头一起运行时,所有的工作都非常出色 – 直到它没有。 所做的要求不是太复杂(基本的select和插入),并且在几毫秒之后肯定会作出回应。 我的testing脚本调用我定义的路线(按顺序),但有时只是在任意请求(工头和生产)上停止和超时。 该应用程序不会崩溃,仍在运行,但不再响应任何types的请求(cURL,浏览器,…) 这里是日志: 2013-12-06T11:47:59.115033+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path=/users host=myapp.herokuapp.com fwd=IP dyno=web.1 connect=1ms service=30000ms status=503 bytes=0 当我重新启动应用程序,并再次触发所述请求,…它完美的作品。 那么,直到它不再(8-12请求testing)。 我还testing了每个路由调用的日志logging,发现超时请求甚至不会触发代码的第一行! 因此,我被引导认为,这个问题并不在于我的反应持续很长时间。 这可能是什么原因? 它是一些免费的限制? 我真的希望不会,因为那意味着我可以单击“撞击”服务器,打F5十几次。

Nodjs如何将消息广播到名称空间与房间

我可以使用以下代码将消息发送到特定的命名空间 io.of(namespace).in(room).emit('functionname', data); 但它发送到所有连接的客户端,包括发件人,我想要的是我要发送的邮件不包括发件人,我已经尝试使用以下方法,但一切都失败,因为语法不正确 io.broadcast.of(namespace).in(room).emit('functionname', data); io.of(namespace).broadcast.in(room).emit('functionname', data); io.of(namespace).in(room).broadcast.emit('functionname', data); io.of(namespace).in(room).broadcast('functionname', data); 我怎样才能发送消息给每个客户,不包括发件人。

mongdb / nodejs:在$ inc中使用variables不起作用

我有以下,我进入了蒙戈terminal,它的工作很好 db.cars.update({'_id':'FordXdfg'},{$inc :{'attribs.0.totl':1}}) 基本上使用点符号更新数组,0是数组的索引。 这确实有用。 但将其转移到节点我的0来自一个variables。 所以我试了 var carIndex = 3; cars.update({'_id':'FordXdfg'},{$inc :{'attribs.' + carIndex + '.totl':1}}, function (err, callback) …………….) 似乎是无效的JavaScript,如果我更换我的carIndex 3然后它的作品即 cars.update({'_id':'FordXdfg'},{$inc :{'attribs.3.totl':1}}, function (err, callback) …………….) 有任何想法吗? 谢谢