我有一個貓鼬模式User
,並在那裏現場friends
,引用再次,像這樣:貓鼬填充參考自己的<code>User</code>架構模式
var UserSchema = new Schema({
name: String,
email: { type: String, lowercase: true },
role: {
type: String,
default: 'user'
},
friends: [{ type: Schema.Types.ObjectId, ref: 'User'}]
});
這工作得很好,我可以看到該用戶的ID在數據庫中設置一些像這樣的後:
var test = new User({...});
var admin = new User({...});
var users = [test, admin];
User.find({}).remove(function() {
User.create(users, function() {
console.log('finished populating users');
});
});
但現在我要得到一個單一的用戶,只是喜歡的文檔時,填充friends
場,我這樣做:
exports.show = function (req, res, next) {
var userId = req.params.id;
User.findById(userId)
.populate('friends')
.exec(function (err, user) {
if (err) return next(err);
if (!user) return res.send(401);
res.json(user.profile);
});
};
但我只是得到正常/未填充的用戶ID回來!
我越來越覺得這是因爲用戶模式的自我參照,但ID在數據庫中出現的罰款...
建議的重複並不能真正幫助我,因爲我不即使使用那麼多嵌套,問題可能只是自我引用模式!
任何想法?提前致謝!
可能重複[mongoose遞歸填充](http://stackoverflow.com/questions/26041262/mongoose-recursive-populate) – B3rn475
嗯,可能是,但我沒有比這更高的水平。這只是'填充()'不工作... – Kageetai