我有2個模型,我正在處理。用戶可以擁有許多他喜歡的電影,並且電影可以被多個用戶喜歡。我決定將這些信息存儲在每個用戶中。Mongoose存儲數組ObjectId
我試圖存儲moviesLiked陣列中的movieid但每次我保存,它拋出一個錯誤,CastError:投射到的ObjectId在路徑失敗值'1234「moviesLiked」。
我嘗試檢索電影對象,並將movie.id推入數組,但它似乎並沒有爲我工作,並從此刪除它。我可能一直在做錯事,如果有人告訴我,我應該向哪個方向前進,因爲我對貓鼬很新。
資源基礎上 Array of ObjectIds in Mongoose 3.8
user.js的
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
username: String,
moviesLiked: [{ type: Schema.ObjectId, ref: 'Movie' }]
});
module.exports = mongoose.model('User', UserSchema);
movie.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var MovieSchema= new Schema({
id: Number,
name: String,
});
module.exports = mongoose.model('Movie', MovieSchema);
在我的路線
最後/ index.js
router.route('/api/users/:userid/:movieid').put(function(req, res) {
User.findByIdAndUpdate(
req.params.userid,
{ '$push': { 'moviesLiked': req.params.movieid } },
function(err, user) {
console.log(user);
}
);
});
更新:取而代之的是id。雖然沒有工作。
router.route('/api/users/:userid/:movieid').put(function(req, res) {
Movie.findById(req.params.movieid, function(err, movies) {
User.findByIdAndUpdate(
req.params.userid,
{ '$push': { 'moviesLiked': movies.id } },
function(err, user) {
console.log(user);
}
);
});
});
你傳遞你從你的模式作爲路由參數或mongodb _id r電影ID? –
它作爲路由參數傳遞。我試圖檢索findById()movieId並傳遞mongo _id以及movie.id,但仍然是相同的結果。 –
傳遞默認的MongoDB _id作爲路由參數,而不是您在模式中定義的id字段 –