我仍然試圖擺脫SQL模式,這可能是這是一個架構問題而不是實現的原因,但我不能爲我的生活弄清楚如何完成我想要達到的功能。Mongoose模型不保存數組
我有一個架構,爲用戶。它可以毫無麻煩地將用戶用mongoose保存到mongoDB中。它包含沿用戶名,密碼等行的通用東西。
然而,我們有一個新的屬性進入到模式模型,這被稱爲成就,並且是來自另一個模式的成就數組。它在用戶模式中聲明如下:
var UserSchema = new Schema({
_id : { type: String, unique: true },
group_id : { type: String, required: true },
username : { type: String, required: true },
achievements : { type: Array }
});
在UserSchema.save,我找了成果模型得到的匹配相同group_id
是成就一個數組,如下所示:
exports.create = function(req, res, next) {
var newUser = new User(req.body);
// Populate the achievements (same group_id)
Achievement.find()
.where({ group_id: newUser.group_id })
.select({ _id: 1 })
.exec()
.then(function(achievementsForGroupArray) {
_.forEach(achievementsForGroupArray, function(achievementForGroup) {
newUser.achievements.push(achievementForGroup);
});
})
.catch(function(err) {
return res.status(400).send(err).end();
})
newUser.save(function(err, user) {
// .. generic validation stuff ..
}
現在,在上面,即使用直接推回返回的數組來取代forEach()
也不起作用,甚至只需按下'test'
即可取代推送,但仍然無法填充它。
當我在console.log newUser
保存之前,他們在那裏。當我console.log的user
部分newUser.save(function(err, user)
沒有任何成就。
我的模式安裝不正確,所以Mongoose/MongoDB只是放棄它,因爲它不是match
正確的類型?
編輯:我確定有結果,因爲當我控制檯登錄他們,我可以看到他們在foreach裏面。
你可以在這裏放置「achievementForGroupArray」對象嗎? –