我知道填充模式並不是一個新問題,但是我對遵循多重模式的邏輯有點麻煩。我正在與使用addToSet在嵌套模式貓鼬內添加項目
"mongoose": "^4.8.5",
"express": "^4.15.0",
我有一個模式與咖啡因飲料的集合。當用戶選擇飲品時,我想將該飲品分配給使用者。
**如果在任何時候我錯過了一些簡單的架構,請讓我知道。這個項目是我對mongodb的介紹。
我正在閱讀通過填寫貓鼬文檔http://mongoosejs.com/docs/populate.html。
本質上,如果我要將飲料分配到列表中,它看起來像我想將它們作爲參考添加到數組中。這是我與caffeine_list
const SelectedDrinks = require('./userDrinks');
const UserSchema = mongoose.Schema({
name: {
type: String
},
email: {
type: String,
required: true
},
username: {
type: String,
required: true
},
password: {
type: String,
required: true
},
caffeine_list: caffeine_list: [ // attempting to reference selected drinks
{
type: mongoose.Schema.Types.ObjectId,
ref: 'SelectedDrinks'
}
]
})
SelectedDrinks來自下面的架構方法。我添加到用戶的引用作爲創建者下面
const User = require('./user');
let userDrinkSchema = new mongoose.Schema({
creator : {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
caffeine: Number,
mgFloz: Number,
name: String,
size: Number,
updated_at: {
type: Date,
default: Date.now()
}
});
這是我開始感到困惑。我最初嘗試填充,但無法完成。如果這是正確的,請讓我知道。
關於我向用戶添加選定飲品的任務,我使用了addToSet。我希望這會給我飲料信息。我做了這樣的設置...
const User = require('../../models/user');
const UserDrinks = require('../../models/userDrinks');
router.post('/addDrink', (req, res, next) => {
let newDrink = new UserDrinks({
creator: req.body.creator,
caffeine: req.body.caffeine,
mgFloz: req.body.mgFloz,
name: req.body.name,
size: req.body.size,
updated_at: req.body.updated_at
});
newDrink.save((err) => {
if(err) {
res.send(err);
} else {
User.findOne({ _id: newDrink.creator}, (err, user) => {
user.caffeine_list.addToSet(newDrink)
user.save(function (err) {
if(err) {
console.log(err);
}else {
res.status(201).json(newDrink);
}
})
})
}
})
});
然而,當我在郵遞員做了後我檢查caffeine_list,其結果是
"caffeine_list" : [
ObjectId("58d82a5ff2f85e3f21822ab5"),
ObjectId("58d82c15bfdaf03f853f3864")
],
理想我想有正有像這樣
咖啡因信息傳遞的對象數組"caffeine_list" : [
{
"creator": "58d6245cc02b0a0e6db8d257",
"caffeine": 412,
"mgFloz": 218.7,
"name": "1.95 Perfect Drink!",
"size": 42.93,
"updated_at": "2017-03-24T18:04:06.357Z"
}
]
最後一個部件不能正確的。您的POST處理程序僅返回作爲對象的新添加的飲料。具體在你的問題上。你在努力完成什麼? – Mikey
我正試圖完成我在userSchema的caffeine_list數組中注意到的內容。我正在嘗試向帖子內的userSchema添加飲料。我能夠在mongo和caffeine_list數組中找到userId。問題是我添加了對象ID。而不是newDrink。 – Winnemucca