Tag: async.js

在Node.js的另一个文件中同步使用返回值

我通过一个帮助文件连接来自一个已定义用户的tweets,并尝试在我的server.js中检索它,但是那里的str值仍然是未定义的(并且这条线首先被执行),然后我的帮助者的console.log用正确的价值。 输出: GET / login / twitter / callback 302 618.242 ms – 0 服务器中的连接Tweets:未定义 助手级联推文:testing鸣叫3 #TestTweettesting鸣叫2testing鸣叫1 任何人都可以帮助我应该使用什么控制stream来调用twitterHelper.getTweets函数来获取服务器中返回的str? 谢谢! Server.js app.get('/login/twitter/callback', passport.authenticate('twitter', {failureRedirect: "/login"}, function(req, res) { // auth success async.waterfall ([ function(callback) { callback(null, twitterHelper.getTweets(user)); }, function(str, callback) { console.log("Concatenated Tweets in Server: " + str); callback(null); } ], function(err) { if(err) console.log("Error: " […]

MEAN 2多租户(多个集合保存相互参考)

所以,虽然学习JS,特别是MEAN 2堆栈,我试图build立一个基本的多租户应用程序。 我build立快速注册路线,我试图达到的stream量将是: 注册公司名称,电子邮件和密码。 信息会去保存一个新的租户,然后返回新租户的_id,然后使用这个新的ID,电子邮件和密码来保存一个新的用户。 最接近的是: router.post('/', function (req, res, next) { var tenant = new Tenant({ name: req.body.name }); var newTenant; tenant.save(function (err, tenant) { if (err) { return res.status(500).json({ title: 'An error has occured', error: err }); } res.status(201).json({ message: 'Tenant created', obj: tenant }); return(tenant._id); newTenant = tenant; }); Tenant.findById(newTenant._id, function(err, tenant) […]

Mongooseasynchronous调用内循环与asynchronous库

我刚开始使用nodejs / mongoose,我想我有一个经典的asynchronous问题。 有人可以指导我如何解决这个asynchronous问题? 我有这个函数“getAreasRoot”和里面我有一个循环来填充另一个asynchronous函数的结果的儿童。 我怎样才能解决它与asynchronous库? areaSchema.statics.getAreasRoot = function(cb: any) { let self = this; return self.model("Area").find({ parentId: null }, function(err: any, docs: any){ docs.forEach(function(doc: any){ doc.name = "Hi " + doc.name; doc.children = self.model("Area").getAreasChildren(doc._id, function(err: any, docs: any){}); }) cb(err, docs); }); }; areaSchema.statics.getAreasChildren = function(id: any, cb: any) { return this.model("Area").find({ parentId: null […]

使用async.waterfall

我正在使用node.js和asynchronous包。 这是我有的代码: async.waterfall( [ function(callback) { var data = getSomeData(); callback(null, data); }, function(data, callback) { someFunctionThatNeedsData(data); callback(null, 'done'); } ], function(err, result) { } ); getSomeData具有一个asynchronousHTTP请求,用于从Web服务获取一些数据。 我想等待,直到我得到一个响应,然后返回该数据,并将其传递给一些someFunctionThatNeedsData 。 我期望的是getSomeData – 包括其内部的callback – 将不得不完成,然后再调用someFunctionThatNeedsData 。 问题在于,尽pipe在这里使用了waterfall函数,但data到达someFunctionThatNeedsData函数所需要的data还是未定义的。 另外,从console.log我可以看到getSomeData的结束是在getSomeData内部的callback甚至开始之前达到的。 我错误地使用了waterfall ,还是这里不是正确的工具? 如果它不对,我可以用什么来达到预期的效果? 或者我必须辞职,以深嵌套callback(未来的工作,我会),并不得不通过提取内联代码到命名函数缓解它?

async.each在完成所有迭代后callback

现在我已经一头撞在这段代码上几个小时了。 而且我之前多次使用过“ async.each ”。 可能是代码只是需要一组不同的眼睛来工作。 这是代码和问题。 async.each(process.argv, function(file, callback){ runFile(file, callback); }, function(err){ console.log("Here is the error!:" + err +"files to unstage: " + filesToUnstage) if(err) console.log(err); else{ if(filesToUnstage) { __unstage(); } } }); RUNFILE: function runFile(filename, callback) { // Do a bunch of stuff …. __parseOutput(output, callback); } __parseOutput: function __parseOutput(output, callback){ //Do some […]

在Async瀑布中为每个具有Mysql连接池的函数

我已经按照这个教程 ,现在我正在build立一个连接到一个Mysql数据库与一个工作连接池的Express js应用程序; 然后我使用Async.js在我的服务器中的瀑布指令。 我只是重构我的代码避免callback地狱。 我很困惑,因为我有一个嵌套的forEach函数(callback地狱的情况),它完全获得我的MySql连接的工作代码,现在没有任何工作。 问题:收到GET请求后,直到“Action Two”打印。 这是我目前的MWE : apiRoutes.get('/endpoint', function(req, res) { async.waterfall([ function actionOne(callback){ connection.acquire(function(err, con){ con.query( myQuery , function(err, result){ con.release(); if(err){ console.log(err); callback(err); } else { console.log("Action One Success"); callback(null, result); } }); }); }, function actionTwo(list, callback){ console.log("Action Two"); var arr = []; list.forEach(function(item, index, array){ item.arr = []; […]

asynchronous:使用Async.forEach组合两个mongodb集合

我是非常新的平均值堆栈,我正在尝试学习asynchronous。 我正在尝试使用asynchronous结合来自MongoDB的两个集合 并将这个迭代应用到一个集合上,为每个项目执行一个asynchronous任务 ,我试图学习这个简单任务的最简单有效的方法,这样很容易理解。 var OrderSchema = new mongoose.Schema({ menu_id: {type:mongoose.Schema.Types.ObjectId, ref: 'Foods'}, menu_name: {type:String,required:false}, customer_id: {type:String,required: true,}, customer_name:{type:String, required: false}, table_no:{type:String,required:true}, cooking:{type:Boolean, require:false, default:false}, ready:{type:Boolean,default:false}, served:{type:Boolean,default:false}, paid:{type:Boolean, default:false}, price: {type:Number, default:0}, quantity: {type:Number,default:0}, created_at: { type: Date, default: Date.now } } 付款模型 var mongoose = require('mongoose'); var PaymentSchema = new mongoose.Schema({ order_number: {type:String, required: […]

每个asynchronous里面的nodejsasynchronous并行

首先,我是nodejs的新手。 在一个API中,我必须在每个循环中执行多个查询。 所以,我开始使用express的asynchronous模块。 我正在使用的确切代码是 new_or_updated = {}; async.each(rows, function(e, callbackParent) { new_or_updated.id = e.id; async.parallel([ function(callback){ db.query("SELECT sender_string FROM filter_positive_rules_sender WHERE rule_id = ? AND is_deleted = 0", e.id,function(err, rows, fields){ if (err) { return callback(err); } new_or_updated.sender = rows.map(x => x.sender_string); callback(null); }); }, function(callback){ db.query("SELECT subject_string FROM filter_positive_rules_subject WHERE rule_id = ? AND […]

javascript nodejs if语句是以意外的顺序调用的

鉴于下面的代码,我假设我遇到了asynchronous问题。 exports.existingCheck = function (req, res, next) { var query = [], message = [], userObj = {}, i, body = req.body; if(body.displayName){ var regex = new RegExp(["^", body.displayName, "$"].join(""), "i"); }; if(req.user){ var userObj = req.user; } if (body.displayName !== userObj.displayName) { console.log('body n no match') query.push({ displayName: regex }); } if (body.email !== […]

如何通过API获取用户

我的项目有两种模式:申请人和公司。 创build,authentication和删除用户发生在相同的API。 所以,我有一个中间件,通过会话ID来parsing用户模型。 例如,它将用于获取当前用户,首先我们通过其ID接收用户,然后发送它。 我的代码如下: getUserByID(req, res, next) { if (req.session.user_id) { async.race([ (callback) => { Applicant.findOne({_id: req.session.user_id}) .catch(() => { return apiHelper.handleError(res, 'Unknown error', 'Can not find user') }) .then(callback) }, (callback) => { Company.findOne({_id: req.session.user_id}) .catch(() => { return apiHelper.handleError(res, 'Unknown error', 'Can not find user') }) .then(callback) } ], (user) => { […]