[英]How to populate a mongoose schema
我有以下貓鼬模式
var postTable = mongoose.Schema({
userPost:{type : String},
dateCreated: {type: Date, default: Date.now},
_replies:[{type: mongoose.Schema.Types.ObjectId, ref: 'reply_table'}],
_creator:{type: mongoose.Schema.Types.ObjectId, ref: 'User'}
});
和
var reply_table = mongoose.Schema({
userReply:{type:String},
date_created:{type:Date, default: Date.now},
_post:{type: mongoose.Schema.Types.ObjectId, ref: 'post'},
_creator:{type: mongoose.Schema.Types.ObjectId, ref: 'User'}
});
var userPost = module.exports = mongoose.model("Post",postTable);
var userReply = module.exports = mongoose.model('reply_table',reply_table);
用戶可以創建將被輸入到Post表中的帖子,其他用戶可以評論或回復將被輸入到Reply_table中的帖子。 然后我嘗試像這樣填充post表
module.exports.getPost = function (callback) {
var mysort = { dateCreated: -1 };
userPost
.find({},callback)
.sort(mysort)
.populate('_creator','username')
.populate(' _replies')
.exec(function (err,post) {
if(err) throw err;
console.log(post)
});
};
當控制台打印出帖子時,它會打印帖子信息和帶有用戶信息的對象,因為我為用戶提供了另一種模式設置,因此我使用了.populate('_creator','username')
問題在於它不會打印答復信息,而只會打印一個空數組:reply []。
我很確定自己做的一切正確。 我使用以下代碼將信息插入reply_table
//make a reply on a post
module.exports.make_reply = function (user_id,pid,reply,callback) {
var newReply = userReply({
_creator: user_id,
_post: pid,
userReply: reply
});
newReply.save(callback);
}
我知道這個問題很長,但是沒有人知道我可能做錯了什么。 我只想使用來自reply_table的信息來填充Post模式
我終於想出了解決我問題的方法。 我所做的是創建了一個將回復ID插入帖子表的函數。 它基本上通過其ID獲取評論,並將回復推入post表的_replies數組中。
//Insert reply into post table
module.exports.addReply = function (id,reply) {
userPost.update({_id:id},{$push:{replies:reply}},{multi:true},function
(err,post) {
});
}
當我使用getPost函數時,它將填充回復表
module.exports.getPost = function (callback) {
var mysort = {dateCreated: -1};
userPost
.find({}, callback)
.sort(mysort)
.populate('_creator', 'username')
.populate('replies')
.exec(function (err) {
if(err) throw err;
});
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.