簡體   English   中英

如何填充貓鼬模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM