2014-04-30 83 views
2

我是Node + Mongoose的新手,目前正在使用KeystoneJS創建API。我已經設法使用作者的電子郵件和名稱填充所有帖子。我的問題是,有沒有辦法用作者每次填充帖子,可能有一些中間衣服,而不必在每個檢索帖子的方法中重寫它?我的目標是不要在整個代碼中分散多個populate('author', 'email name')實例。例如,將來我還希望包括作者的個人資料照片網址,並且我希望能夠在一個地方做出更改,然後將反映在我檢索帖子的每個地方。使用Mongoose + Express預填充文檔

當前實現:

Post.model.find().populate('author', 'email name').exec(function (err, posts) { 
    if (!err) { 
     return res.json(posts); 
    } else { 
     return res.status(500).send("Error:<br><br>" + JSON.stringify(err)); 
    } 
}); 

Post.model.findById(req.params.id).populate('author', 'email name').exec(function (err, post) { 
    if(!err) { 
     if (post) { 
      return res.json(post); 
     } else { 
      return res.json({ error: 'Not found' }); 
     } 
    } else { 
     return res.status(500).send("Error:<br><br>" + JSON.stringify(err)); 
    } 
}); 

回答

1

您可以使用模型。這是例子的架構方法

PostSchema.statics = { 
getAll: function(cb) { 
    return this 
     .find() 
     .populate('author', 'email name') 
     .exec(cb); 
} 
} 

你還是應該用「填充」,但它會在架構文件,所以你不會在將來的

關心它