Tag: callback

NodeJS – 如何发送一个variables嵌套callback? (MongoDB查找查询)

我想在另一个结果集中使用find查询的结果集。 我无法用英语很好地解释这种情况。 我会尝试使用一些代码。 People.find( { name: 'John'}, function( error, allJohns ){ for( var i in allJohns ){ var currentJohn = allJohns[i]; Animals.find( { name: allJohns[i].petName }, allJohnsPets ){ var t = 1; for( var j in allJohnsPets ){ console.log( "PET NUMBER ", t, " = " currentJohn.name, currentJohn.surname, allJohnsPets[j].name ); t++; } } } }); […]

node.js mongojs findOnecallback返回错误为null

目前被这个错误推到了墙上。 我正在用mongodj的mongojs包装器运行node.js应用程序。 我在默认端口上启动了mongod,然后运行 var db = require('mongojs').connect('localhost:27017/my_db'); var users = db.collection('users'); users.findOne({'fb_id' : fbUserMetadata.id}, function(err, user) { console.log(err); console.log(user); debugger; }); 然而,错误和用户都是'空'。 据我所知,即使找不到任何东西,err也应该填充一些数据。 如何使callback函数正常工作? 请原谅这个新手问题。

crypto.pbkdf2是asynchronous的,我如何将其视为同步?

我在node.js中使用pbkdf2来散列密码。 我的问题是,我正在响应身份validation请求,我正在进行身份validation,如果传递的凭据是正确的。 我假设pbkdf2是asynchronous的,因为它可能需要大量的时间(取决于迭代的大小)。 然而,将剩余的authentication逻辑转移到一个单独的方法来利用callback看起来有点难看。 有没有比使用计时器或将所有连续validation逻辑放入单独函数更好的方法? 我知道大多数人会说我应该使用callback,但在我的使用情况下,这是没有道理的。 直到我将pbkdf2应用到传递的密码之后,我才能继续进行身份validation。

nodejs gruntsubprocesscallback函数的例子

你会好心帮助下面一个节点执行命令运行与咕噜的例子? echo命令正在执行,并且创build了hello-world.txt ,但callback函数中的grunt.log.writeln命令不会触发。 var exec = require('child_process').exec, child; child = exec('echo hello, world! > hello-world.txt', function(error, stdout, stderr){ grunt.log.writeln('stdout: ' + stdout); grunt.log.writeln('stderr: ' + stderr); if (error !== null) { grunt.log.writeln('exec error: ' + error); } } ); 参考文献: http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options 从节点subprocess中检索一个值

节点JS匿名函数和callback

有人请帮助我。 我一直在阅读大量的javascript文档和javascript的摆弄。 我能够使用这些function,但是我没有完全得到这个必要的语法爵士乐 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, 'myhost'); console.log('Server running at http://myhost:1337/'); 我不知道为什么它可以使用上面的匿名函数req和res。 就像他们住在http的某个地方一样。 他们没有宣布任何地方! 它们是由引用内部对象或其他东西的匿名函数中的variables名组成的。 这很疯狂。 这样的callback函数如何? 或者像 stream.on('data', function(data){ // use data… i dont know where its coming from // or how it got there, but use it }); 如果你可以发布一个模仿这个过程和语法的小例子,或者说明这些callback函数是如何工作的,或者我可以如何将这些未声明的variables传递给像这样的函数,我将不胜感激。 下面的答案类似的例子。 var b […]

TypeError:任务不是asynchronousjs平行的函数

我试图上传一个图像,并使用下面的代码更新数据库集合中的图像的url。 Controller.prototype.handle = function (req, res, next) { var id = req.params.id, controller = req.params.controller, optionalController; optionalController = _.clone(controller); // handle optional controller if (controller === 'newboat') { controller = 'boat'; } else if (controller === 'newcrew') { controller = 'crew'; } var files = req.files.files || {}, monthYear = new Date(), monthYear = [monthYear.getFullYear(), […]

如何处理callback函数中的响应(例如nodejs中的cradle)

我在“nodejs”中使用“express”和“cradle”。 如果我请求我的数据库,我必须定义一个callback来处理响应。 不幸的是我没有访问res(响应)在我的callback函数。 这个问题的最佳做法是什么? 这是我的代码。 var cradle = require('cradle'); var db = new cradle.Connection().database('guestbook'); app.get('/guestbook', function(req, res) { db.view('guestbook/all', function(err, doc) { console.log(doc); // How can I use res in this callback // to send the response? }); });

为callback函数添加额外的参数

我正在Node.js中构build一个系统,该系统应该查找文件夹数组中的所有文件,统计它们,然后使用该信息做一些额外的工作。 我正在使用fs.readdir()从每个文件夹同步获取所有文件。 我的代码如下所示: for(i=0,max=paths.length; i<max; i++) { var path = paths.pop(); console.log("READING PATH: " + path); fs.readdir(path, function(err, files) { handleDir(err, files, path); }); } 问题是,取决于readdir()执行的速度,handleDir()得到错误的path。 发生这种情况的原因是,callback运行时,下一个循环已经开始 – 这意味着pathvariables已经改变。 所以,我需要做的是以某种方式将该pathvariableslocking为特定的callback函数。 我想不出有什么好办法做到这一点 – 任何人有一些想法?

在node.js httpcallback函数中,variables增加了两倍

我正在玩node.js,当你运行这个代码时会发生一些奇怪的事情: var http = require("http"); var i = 0; function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("You're number " + i++); response.end(); } http.createServer(onRequest).listen(8888); 我希望它的行为像一个页面浏览计数器,但与每个刷新的浏览器选项卡我得到似乎是i=i+2的结果,而不是一个简单的增量。 有人可以向我解释这种行为吗?

在nodeJs中避免callback地狱/将variables传递给内部函数

这里有一个我想要简化的例子: exports.generateUrl = function (req, res) { var id = req.query.someParameter; var query = MyMongooseModel.findOne({'id': id}); query.exec(function (err, mongooseModel) { if(err) { //deal with it } if (!mongooseModel) { generateUrl(Id, function (err, text, url) { if (err) { res.status(HttpStatus.INTERNAL_SERVER_ERROR).send(err); return; } var newMongooseModel = new AnotherMongooseModel(); newMongooseModel.id = id; newMongooseModel.save(function (err) { if (err) { […]