Articles of 诺

链承诺在JavaScript

我创build了许多这样的承诺,以便在我的数据库中创build对象。 var createUserPromise = new Promise( function(resolve, reject) { User.create({ email: 'toto@toto.com' }, function() { console.log("User populated"); // callback called when user is created resolve(); }); } ); 最后,我想按我想要的顺序打电话给我所有的承诺。 (因为有些对象依赖于其他对象,所以我需要保持这个顺序) createUserPromise .then(createCommentPromise .then(createGamePromise .then(createRoomPromise))); 所以我期望看到: User populated Comment populated Game populated Room populated 不幸的是,这个消息被打乱,我不明白是什么。 谢谢

Node.js检测两个mongoose发现完成时

我正尝试用这个库自动完成初始化两个input。 当我加载我的页面时,我将触发一个Ajax来初始化两个input文本。 但是我不知道当我所有的mongoose发现什么时候完成的时候我怎么能发现。 这是我的服务器端代码: app.post('/init/autocomplete', function(req, res){ var autocomplete = { companies: [], offices: [] }; // Find all companies Company.find({}, function(err, companies) { if (err) throw err; companies.forEach(function(company) { autocomplete.companies.push({value: company.name}) }); console.log('One'); }); // Find all offices Office.find({}, function(err, offices) { if (err) throw err; offices.forEach(function(office) { autocomplete.offices.push({value: office.name}) }); console.log('Two'); }); console.log('Three'); […]

在MEAN堆栈中不推荐使用Mongoose的默认承诺库

我试图启动一个MEAN堆栈服务器,但是我得到这个错误信息: Mongoose:mpromise(mongoose的默认承诺库)已被弃用,插入自己的承诺库,而不是: http ://mongoosejs.com/docs/promises.html 我试图在这里search一些答案,但是我发现的答案对我来说还不够清楚: (node:3341)DeprecationWarning:Mongoose:mpromise 我发现文件调用mongoose.connect,但在这个问题上的代码不适合我,任何人都可以解释它是如何工作的?

为什么在调用mongoose Model.create节点时不能链接.catch?

我有一个mongoose模式,并调用Model.create()。 当我在'then'之后链接'catch'时,我得到的未定义不是一个函数,如果我只是将错误函数作为第二个参数调用到'then',那么我不会。 但是当我调用Model.find之类的方法时,我可以使用'catch'。 为什么在调用Model.create时不能链接“catch”? var mySchema = Mongoose.Schema({ name: String, }); 作品: KarmaModel.create({ "name": "ss, }) .then(function() { //do somthing },function()=>{ //do somthing }); 不起作用: KarmaModel.create({ "name": "ss, }) .then(function() { //do somthing }).catch(function()=>{ //do somthing });

如何使用承诺,以避免callback地狱?

所以我有一个Posts集合 { id: String, comments: [String], # id of Comments links: [String], #id of Links } 评论:{id:String,comment:String,} 链接:{id:string,链接:string,} find一个post的评论和链接属于它的ID: Posts.findOne({id: id}, function(post) { Comments.find({id: post.id}, function(comments) { Links.find({id: post.id}, function(links) { res.json({post: post, comments: comment, links: links}) }) }) }) 如何使用Promise( http://mongoosejs.com/docs/promises.html )避免callback地狱? var query = Posts.findOne({id: id}); var promise = query.exec(); promise.then(function (post) { […]

JavaScript承诺mongoose和蓝鸟缺less捕获和失败

我已经开始使用承诺,我使用Node.js芒果(与mongoose)和蓝鸟..我遇到的问题是由于某种原因,当我链接mongoose调用function返回承诺(我假设这是正确的方式返回和链)然后我得到: typeError: Object #<Promise> has no method 'fail' 如果我改变了失败,那么我得到同样的问题: typeError: Object #<Promise> has no method 'catch' 我所做的是使用function(空,function)模式,这是完全失败和赶上。 然而,catch / fail更具可读性。 任何线索为什么我得到这个,我该如何解决这个问题? 这是一个代码块的例子。 User.findOne({ 'email' : user_email }).exec() }).then (promisedTransformUserSchemaToFrontendObjectWithProjectMapping) .then (function (feUser) { return new Promise(function (resolve, reject) { res.json(feUser); return resolve(feUser); }); }).fail/catch (function (err) { console.log(err); sendError(res,"failed to get user",err); }); 这里是堆栈跟踪: TypeError: […]