Node.js Mongoose$push的问题
我真的需要第二双眼睛。我正在使用Mongoose npm在我的MongoDB中创建一个新条目。然后我在异步npm的几个函数中使用了这个新条目 我遇到的问题是,我得到的是前三个控制台日志,“hitter”、“create”和“req.body.campaign_id”,但没有超过这三个日志。我认为这与我在第一次findByIdAndUpdate中的$push有关。请参阅下面我的代码和模式 代码!请参阅异步并行“活动”功能Node.js Mongoose$push的问题,node.js,mongodb,mongoose,npm,Node.js,Mongodb,Mongoose,Npm,我真的需要第二双眼睛。我正在使用Mongoose npm在我的MongoDB中创建一个新条目。然后我在异步npm的几个函数中使用了这个新条目 我遇到的问题是,我得到的是前三个控制台日志,“hitter”、“create”和“req.body.campaign_id”,但没有超过这三个日志。我认为这与我在第一次findByIdAndUpdate中的$push有关。请参阅下面我的代码和模式 代码!请参阅异步并行“活动”功能 Bid.create(req.body, function(err, bid
Bid.create(req.body, function(err, bid){
console.log('create')
async.parallel({
campaign: function(done) {
console.log(req.body.campaign_id)
Camapaign.findByIdAndUpdate(req.body.campaign_id, {
$push: { bids: bid._id }
}, {
safe: true,
upsert: true
}, function(err, campaign){
console.log('camp', 2)
if(err) {
console.log(err)
done(err)
} else {
done(null, campaign)
}
});
},
user: function(done) {
console.log('user', 1)
User.findByIdAndUpdate(req.body.user_id, {
$push: {'bids': bid._id }
}, {
safe: true,
upsert: true
}, function(err, bid){
console.log('user', 2)
if(err) {
done(err)
} else {
done(null, bid)
}
});
}
}, function(err, response){
console.log('response')
if(err) {
console.log(err)
} else {
res.status(200).send(response);
}
});
})
活动模式
var campaignSchema = new mongoose.Schema({
title:String,
imgUrl:[String],
shortDesc: { type: String, set: shortenDesc },
longDesc:String,
duration: Number,
price: Number,
desired_price: Number,
bids: [{ type: mongoose.Schema.Types.ObjectId, ref: 'bidSchema' }],
owner_id: { type: mongoose.Schema.Types.ObjectId, ref: 'userSchema' }
});
var schema = new mongoose.Schema({
name: String,
email: {
type: String
},
password: {
type: String
},
salt: {
type: String
},
twitter: {
id: String,
username: String,
token: String,
tokenSecret: String
},
facebook: {
id: String
},
google: {
id: String
},
campaigns: [campaignSchema],
bids: [{type: mongoose.Schema.Types.ObjectId, ref: 'bidSchema'}]
});
用户模式
var campaignSchema = new mongoose.Schema({
title:String,
imgUrl:[String],
shortDesc: { type: String, set: shortenDesc },
longDesc:String,
duration: Number,
price: Number,
desired_price: Number,
bids: [{ type: mongoose.Schema.Types.ObjectId, ref: 'bidSchema' }],
owner_id: { type: mongoose.Schema.Types.ObjectId, ref: 'userSchema' }
});
var schema = new mongoose.Schema({
name: String,
email: {
type: String
},
password: {
type: String
},
salt: {
type: String
},
twitter: {
id: String,
username: String,
token: String,
tokenSecret: String
},
facebook: {
id: String
},
google: {
id: String
},
campaigns: [campaignSchema],
bids: [{type: mongoose.Schema.Types.ObjectId, ref: 'bidSchema'}]
});
如果你还需要看别的东西,请告诉我。感谢所有的帮助
谢谢 您正在执行
Camapaign.findbyiandupdate
您确定Camapaign
没有错贴在那里吗?是不是应该是活动
?你好,尤里!谢谢你的回复。那是个打字错误,我把它修好了。仍然得到同样的结果。仍然是一个很好的发现,所以我假设console.log('response')
没有被执行?您是否已确定bid.\u id
已定义?如果是未定义的
猫鼬可能会发生不好的事情。永远不会记录响应。我可以确认出价。_id不是未定义的。我将“console.log(req.body.campaign_id)”替换为“console.log(bid.u id)”,并得到了我想要的值。在完成console.log之后,会发生什么?它就挂在那里吗?有错误吗?Np:)它抛出了一个错误,但是错误被吞没了。您可能应该调查原因,因为在控制台中查看错误非常有用。