利用Bluebird来实现Promisfy Mongoose ,我有一个Promise.map(函数,带有一系列if / else,用于遍历数组以查看引用文档是否存在,否则创建一个。
将findOneAsync的产品分配给变量,然后将'variable._id'分配给正在创建的新文档(主要 promise ),控制台将记录{"isFulfilled":false,"isRejected":false}
这是一个片段:
for (i=0; i<items.length; i++) {
var existingItem = Models.Items.findOneAsync({ item: items[i] });
console.log( "existingItem : ");
console.log( JSON.stringify(existingItem) );
console.log( "existingItem._id : " + existingItem._id );
这是一条日志:
existingItem :
{"isFulfilled":false,"isRejected":false}
existingItem._id : undefined
为什么
existingItem
变量可能在Model.Item.findOneAsync ..中挂起? 最佳答案
您的问题并不十分清楚,但是我想问的是,为什么existingItem
在检索后不立即挂起。
您了解如何使用 promise 吗?大多数时候,您需要使用.then()
或其他promise操作函数来获得其解析值:
var existingItem = Models.Items.findOneAsync({ item: items[i] });
existingItem.then(function (value) {
console.log( "existingItem : ");
console.log( JSON.stringify(existingItem) );
console.log( JSON.stringify(value); );
console.log( "existingItem._id : " + existingItem._id );
});