0
我有嵌入文檔的架構,該設置是這樣的:如何使用Mongoose獲取新創建的嵌入式文檔?
var Guests = new Schema({
email: {
type: String,
required: true
},
time: {
type: Date,
default: Date.now
}
});
var Devices = new Schema({
user: {
type: String,
required: true
},
time: {
type: Date,
default: Date.now
},
name: {
type: String,
required: true
},
guests: [Guests]
});
我創建具有以下代碼的新客人:
// Check if already invited
Device.findOne({ '_id': req.body.device_id, 'user': req.user.href, 'guests.email': req.body.guest_email }, function (err, guest) {
// Check for error
if (err) return handleError(err);
// If already invited
if (guest) {
return res.status(402).send({code: 'already_invited', message: 'This guests is already invited.'});
} else {
// If not invited yet, lets create the new guest
device.guests.push({
"email": req.body.guest_email
});
// Save the new guest to device
device.save(function (err) {
if (err) res.status(400).send(err);
// Get the saved guest ID, but how?
});
}
});
一切正常,但我不知道如何獲取新創建的嵌入式訪客文檔。我特別需要身份證,但我希望整個新客人在我的回覆中。在device.save
函數中,device.guests
已經有了新創建的記錄的ID,所以我可以通過它循環並找到它,但我想知道是否有更簡單的方法來做到這一點。
是的,我想在這裏使用的設備,但這個對象返回整個設備,而不僅僅是新客我只是增加。 – passatgt
@passatgt嘗試'device.guests [device.guests.length-1] ._ id'你也可以在device.guests.push()之後執行此操作。 –
@很抱歉...我不知道stackoverflow的評論是如何工作的......可以解釋「代碼只回答傾向於」是什麼?......我的意思是,在我的例子中,如果他需要「客人」。 _id'後,他需要使用'device.guests [device.guests.length-1] ._ id' –