gpt4 book ai didi

javascript - 如何使用 mongoose 和 bluebird promise 确认更新是否成功

转载 作者:行者123 更新时间:2023-11-30 10:07:48 25 4
gpt4 key购买 nike

我正在使用 bluebirdmongoose 作为 Node 页面。我想在通过 socket.js 将数据发送回客户端之前检查更新是否成功。这是我无法理解的代码部分:

.then(function(a) {
var g = collection3.update({
_id: a.one[0]._id
}, {
$set: {
avg: a.one[0].avg
}
}).function(err, d) {
if (!err) {
return 1; // Here's the problem
}
}) return {
updated: g,
info: a
};
}).then(function(c) {
console.log(c.updated); // I can't get the `1` value
if (c == 1) {
io.sockets.in('index|1').emit("estimate", c.three);
}
})

mongoose 更新后是否返回成功消息?我无法从更新查询返回 1 并将其传递给下一个 then 函数,相反,我得到了这个对象:

{ _mongooseOptions: {},
mongooseCollection:
{ collection:
{ db: [Object],
collectionName: 'table',
internalHint: null,
opts: {},
slaveOk: false,
serializeFunctions: false,
raw: false,
pkFactory: [Object],
serverCapabilities: undefined },
opts: { bufferCommands: true, capped: false },
name: 'table',
conn:....

完整代码如下:

  socket.on("input",function(d){ 
Promise.props({
one: collection2.aggregate([
{
$match:{post_id:mongoose.Types.ObjectId(d.id)}
},
{
$group:{
_id:"$post_id",
avg:{$avg:"$rating"}
}
}
]).exec();
}).then(function(a){
var g = collection3.update({_id:a.one[0]._id},{$set:{avg:a.one[0].avg}}).function(err,d){
if(!err){
return 1; // Here's the problem
}
})
return {updated:g,info:a};
}).then(function(c){
console.log(c.updated); // I can't get the `1` value
if(c.updated == 1){
io.sockets.in('index|1').emit("estimate",c.three);
}
}).catch(function (error) {
console.log(error);
})

最佳答案

我假设您在这里使用 Mongoose,update() 是一个异步函数,您的代码是以同步方式编写的。

尝试:

   socket.on("input",function(d){ 
Promise.props({
one: collection2.aggregate([
{
$match:{post_id:mongoose.Types.ObjectId(d.id)}
},
{
$group:{
_id:"$post_id",
avg:{$avg:"$rating"}
}
}
]).exec()
}).then(function(a){
return collection3.update({_id:a.one[0]._id},{$set:{avg:a.one[0].avg}})
.then(function(updatedDoc){
// if update is successful, this function will execute

}, function(err){
// if an error occured, this function will execute

})

}).catch(function (error) {
console.log(error);
})

关于javascript - 如何使用 mongoose 和 bluebird promise 确认更新是否成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28285343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com