Tag: callback

为什么在express路由中调用next()是可选的?

在Nodejs / Express的许多例子中,我看到在成功的情况下调用next()是可选的。 exports.postLogin = (req, res, next) => { passport.authenticate('local', (err, user, info) => { if (err) { return next(err); } req.logIn(user, (err) => { if (err) { return next(err); } req.flash('success', { msg: 'Success! You are logged in.' }); res.redirect(req.session.returnTo || '/'); }); })(req, res, next); }; 而且,在args中nextcallback也很容易: exports.postLogin = (req, res) => […]

Nodejsasynchronous执行

我正在与我公司的数据库工作,我正在尝试build立一个路线。 我得到的数据是1000个值的JSON数组。 这里的function – router.get('some_route', function(req, res, next){ var ress = []; var name = req.params.name; baWelcomeController.autoComplete(name).then(function(succ){ var x = Object.values(succ[0][0]); res.status(200).send(x); }).catch(function(err){ res.status(404).send(err); console.log("error in router.get", err); }); }); 现在看看我的代码的object.values部分,从互联网我知道它的一个O(n)函数,所以nodejs应该推入到调用堆栈,同时执行其他function,但发生了什么是我得到预期的回应。 succ []中的值的数量是1000,所以我写了另一个函数注释Object.values,并写一个for循环, router.get('some_route', function(req, res, next){ var ress = []; var name = req.params.name; baWelcomeController.autoComplete(name).then(function(succ){ var x = 0; for(var i = 0; i […]

如何使用expressjs和mongodb使用promises /callback?

我真的很担心承诺和asynchronousJavaScript工作。 我想在/ user上执行一个GET并查询mongo,以便第一个查询的结果以某种方式处理以形成第二个查询的查询,并且该查询的结果是第三个查询的查询。 基本上我想通过res.send(result)将最终的mongo结果的结果发送回客户端。 这样做的正确方法是什么,以便客户端获得第二个嵌套的mongo查询结果200 OK? app.get('/user', function (req, res, next) { var query = {"isRegistered": false } db.collection('users', function (err, collection) { collection.find(query).toArray(function (err, result) { if (err) { console.log(err) } else { if (result.length > 0) { // do some random processing var randomUser = result[Math.floor(Math.random() * result.length)] // do ANOTHER db query […]

如何获取callback函数的返回值

我想要做一个API请求,并在我的网站上的表格中显示正文。 我正在使用Node.JS,React和Request。 这是我的代码: var requestResult = Request.get('https://test.ipdb.io/api/v1/assets/?search=asdf', (err, res, body) => { return body; }); 这显然不起作用。 我可以console.log(正文),但我希望API回应在callback函数外可用。 那可能吗?

响应问题与callback

我想我在这里错过了一些简单的东西,但是我认为我已经看了太久了。 我最初有你在这里看到的函数内联,但想拉出来,并在我的应用程序的其他方面使用它,但我似乎无法得到预期的信息到POST响应。 这是我的function: let lookUpUserId = (x) => { mongo.connect(url, (err,db) => { assert.equal(null,err); db.collection('data').findOne({"email": {'$eq' : x }},{"_id":1}, (err,result) => { console.log(result); // I'm getting the correct response here. assert.equal(null,err); db.close(); return result; // This seems to be returning empty }); }); }; 现在,这是我打电话给它的地方(简体): router.post('/test1', (req,res,next) => { console.log('Hit on POST /test1'); let obj […]

什么可以是一个更好的方式来处理从nodejs项目中的控制器发送响应?

rooms.js – >控制器类的房间端点 router.get('/:roomid/fight/verify', function(req, res) { roomModel.authenticateUserForFight(req.params.roomid, req.query.otp, res); }); roomModel – >房间的模型类 //authenticate user based on otp provided on client side exports.authenticateUserForFight = function(roomid, otp, res) { db.query('select * from room where roomid=?', [roomid], function(error, rows) { if (rows.length == 0) { console.log("otp does not exist in db for room:" + roomid); } […]

蓝鸟承诺与callback发电机

我如何让蓝鸟自动将.nodeify / .asCallback添加到生成的承诺? 在bluebird中,任何promise实例都可以附加到节点callback机制上: Promise.resolve('foo').asCallback(callback); 然而,有时可能不需要定义承诺本身,而是一种被调用的方法,每次都会返回一个新的承诺,如下所示: // create a new random number promise each time Promise.method((foo, callback) => Math.random()); // create a new random number promise each time using a generator Promise.coroutine(function *(foo, callback) { return Math.random(); }); 在这种情况下,如果我想附加一个callback处理程序的承诺,我不得不这样做“人为地”在最后,使用像这样一个临时的方法: // create a new random number promise each time using a generator Promise.coroutine(function *(foo, callback) { […]

在node.js CLI中获取浏览器响应或callback

当用户第一次使用它时,Snyk会要求authentication。 它看起来像这样: 用户在cmd中键入snyk auth 。 标签在浏览器中打开并login页面。 login。 Snyk收到我已经login的响应,然后进行下一步。 1 – 3对我来说是显而易见的。 但是我不明白节点是如何知道我已经login的。它与HTTP头有关,但我仍然不知道它在代码中的样子。 我试图在cli / commands / auth.js中find我的答案,但代码对我来说太复杂了。

Nodejs Express多个callback错误

我正在使用Nodejs Express自制RBAC系统,基于两个层次: 首先,validation用户是否有正确的angular色来执行此操作。 其次,validation用户是否有正确的计划来执行此操作。 ,我创build了一个这样的中间件: exports.can = function (resource, action) { return function (request, response, next) { action = action || request.method; if (!request.user) { return next(new errors.UnauthorizedError()); } request.user.can(request.user.role, request.user.currentPack, resource, action, function (can, error) { if (error) return next(error); if (!can) { return next(new errors.UnauthorizedError()); } return can; }); return next(); }; }; […]

我如何将范围传递给node-mysql中的callback?

我得到一个client is not defined错误,出以下代码: var mysql = require('mysql'); var conf = { 'database':'database', 'user':'user', 'password':'password' }; function mysqlQuery(mysql, conf, query, callback) { var client = mysql.createClient({ user:conf.user, password:conf.password }); client.query('USE ' + conf.database, function () { client.query(query, callback); }); } mysqlQuery( mysql, conf, 'SELECT * FROM users;', function selectCb(err, results) { if (err) { throw […]