Tag: 蓝鸟

蓝鸟和mongoose:警告:一个承诺是在一个处理程序中创build的,但没有被返回

我在我的项目中使用mongoose和蓝鸟。 这个警告无处不在,即使我纠正了我的所有代码。 它仍然发生。 exports.middleware = function (req, res, next, id) { Account.findById(id).exec().then(function(account) { if (!account) { return res.status(404).send({ message: 'No account with that identifier has been found' }); } req.account = account; next(); }).catch(function(err) { return next(err); }); };

使用promisefiy时出错

我使用promisifyAll到以下模块,因为我想使用它与承诺,我得到错误“TypeError:不能读取属性'然后'未定义” const DBWrapper = Promise.promisifyAll(require("node-dbi").DBWrapper); var dbWrapper = new DBWrapper('pg', dbConnectionConfig); dbWrapper.connect(); dbWrapper.insert('USERS', data, function (err, data) { if (err) { console.log("error to insert data: " + err); } else { console.log("test" + data); } }).then(() => { //read data dbWrapper.fetchAll("SELECT * FROM USERS", null, function (err, result) { if (!err) { console.log("Data came back […]

获取集合中的所有项目

我试图用一些默认的虚拟数据填充数据库,以加快testing。 这是一个使用https://github.com/angular-fullstack/generator-angular-fullstack的项目的一部分,我试图第一次使用promise。 假设我有这样的东西: Thing.create({ name: 'thing 1' }, { name: 'thing 2' }).then((things) => { console.log(things); }); 为什么控制台日志只输出thing 1而不是整个集合? 根据mongoose文档http://mongoosejs.com/docs/api.html#model_Model.create ,该方法返回一个承诺,似乎没有帮助我。

在promisifyAll创build的then-chain链中使用cancel()

不知道我是否足够清楚这个标题,但假设我有一个名为Foo的类与方法1,方法2和方法method3 。 我promisifyAll与promisifyAll方法。 然后,我有一个时间链,我想在第二个或第一个中间取消操作,那么不应该再叫。 我读了取消( http://bluebirdjs.com/docs/api/cancellation.html ),但我不知道如何与promisifyAll实施。 我得到的代码加上我所需要的: var bluebird = require('bluebird'); function Foo() { } Foo.prototype.method1 = function (cb) {}; Foo.prototype.method2 = function (cb) {}; Foo.prototype.method3 = function (cb) {}; var foo = bluebird.promisifyAll(new Foo()); foo.method1Async() .then(function (r1) { // cancel then-chain res.json("Task stopped"); // just stop right here promises.cancel(); }) .then(function (r2) { […]

cloudinary多个.jpg上传NODE.JS

有任何一个人试图上传50 +图像cloundinary? 我一直在尝试,但问题是,承诺没有得到解决(即使使用.reflect(),并不能上传所有的图像。根据上传的速度,它将失败30%〜70%。 有什么办法可以完全使它asynchronous,并确保所有图像上传正确? 我使用的模块只有蓝鸟和cloudinary模块从他们的文档。 Promisebd = require('bluebird'); function uploadimg(img, i, itemId) { var pubID = 'a2z/toys/' + itemId + '/' + i; // return new cloudImg.v2.uploader.upload(img, { return cloudinary.v2.uploader.upload(img, { // works public_id: pubID, quality: 90 // use_filename: true, } , function(err, res){ if(err) { console.log(err); } console.log(res); }); } promiseArr.push(uploadimg(fullimg, i, d[0].details.detailsProductId)); // […]

如何捕获数组中的所有promise都被parsing的事件?

我正在使用Bluebird库与NodeJS(与SailsJS框架) Promise.all()在promises数组中的所有promises均被parsing时不捕获事件。 为了解决这个问题应该做些什么改变? var Promise = require("bluebird"); var request = require('request'); var http = require('http'); function searchMultiple(titles) { var results = []; return new Promise( function( resolveGlobal, rejectGlobal ){ var url = "http://xxx.xxx"; var promises = []; titles.forEach(function (title, index) { promises[index] = new Promise( function (resolve, reject) { var data = {"x":title}; request({ uri: […]

对一组元素做多个承诺

我有一个objectIds列表,我想要去不同的集合,并根据每个Id做操作。 我宁愿一个接一个地按顺序执行操作(依次) var removeOperation = function(objectified){ return Comps.findOne({reviews : objectified}).populate([{ path: "reviews", match : {_id : objectified}}]) } var firstCheckIfAnonHasTheIdInReviewsArrayIfThereDeleteIt = function(objectified){ var query = {reviews : objectified}; var update = {$pull : {reviews : objectified}}; var option = {new :true}; return Anon.findOneAndUpdate(query, update, option ); }; var thenCheckIfUserHasTheIdInReviewsArrayIfThereDeleteIt = function(objectified){ var query = {reviews […]

将parameter passing给生成器函数

在过去的几个小时里,我一直坚持这样做。 如何将parameter passing给生成器函数? function* getFoo(foo) { return yield Promise.resolve(foo + 10); } exports.testRoute = Promise.coroutine(function* (req, res) { let bar = yield Promise.coroutine(getFoo); // <— how to pass argument?? res.send(bar.toString()); }); 当前代码抛出错误 (我知道它指向我在这里,但它没有说任何关于parameter passing): Unhandled rejection TypeError: A value [object Promise] was yielded that could not be treated as a promise See http:// goo.gl/4Y4pDk From […]

TypeError:无法设置未定义的属性'_bitField'(蓝鸟库)

我正在使用蓝鸟2.x. 我打电话给包裹在诺言中的卡夫卡。 如果消息已发布,则承诺将被解决。 如果对卡夫卡的呼叫失败,那么这个promis就会被拒绝。 这是导致错误的一段代码 – redis.get(something) .then(function() { return Promise(function(resolve, reject) { // This is Line 98 in the stacktrace producer.send([ { topic : "Ganga", messages : [JSON.stringify({// some object})] } ], function(err, data) { if(err) { logger.error("Error") logger.error(err); reject(err); return; } resolve(data); }) }); }) 堆栈跟踪如下 TypeError: Cannot set property '_bitField' of undefined […]

mongoose升级后async不会在callback中返回数据

在我的项目中,我使用asynchronous查询到数据库,我有这段代码: async.auto({ one: function(callback){ getFriendsIds(userId, callback) }, two: ['one', function(callback, results){ getFriendsDetails(results.one, callback); }], final: ['one', 'two', function(callback, results) { res.status(200).send(results.two); return; }], }, function(err) { if (err) { sendError(res, err); return; } }); 返回friends的ID的方法如下所示: function getFriendsIds(userId, callback) { var query = User.findOne({_id: userId}); query.exec(function(err, user) { if(err) { callback(err); return; } return callback(null, user.friendsIds); […]