我有2個模型,我正在處理。用戶可以擁有許多他喜歡的電影,并且電影可以被多個用戶喜歡。我決定將這些資訊存盤在每個用戶中。
我試圖存盤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);
}
);
});
});
uj5u.com熱心網友回復:
您自己的ID的型別為Number,但您的moviesLiked陣列需要型別ObjectId。
您的moviesLiked陣列應該包含與Movie模型中默認_id欄位對應的id串列。
我相信裁判只能參考_id,但如果你想用你自己的ID,那么你可以嘗試在MovieSchema設定_id到您自己的ID,然后設定你的moviesLiked輸入您的UserSchema匹配:
user.js的
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
username: String,
moviesLiked: [{ type: Number, ref: 'Movie' }]
});
movie.js
module.exports = mongoose.model('User', UserSchema);
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var MovieSchema= new Schema({
_id: { type: Number, unique: true },
name: String,
});
module.exports = mongoose.model('Movie', MovieSchema);
uj5u.com熱心網友回復:
[align=right]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/54157.html
標籤:其他技術討論專區
下一篇:學習
