findById和load之间的区别?

时间:2015-03-06 15:02:49

标签: mongodb mongoose mean-stack

FindById(id,callBack)Load(id,callback)之间的主要区别是什么?

更多详情:

我是MEAN堆栈网站开发的新手,所以我只是在玩Mean.io:

此代码由Mean.io(controllers / article.js)生成:

Article.load(id, function(err, article) {
    if (err) return next(err);
    if (!article) return next(new Error('Failed to load article ' + id));
    req.article = article;
    next();
  });

我想用findById做同样的结果吗'详细记录在:Model.findById

 Article.findById(id, function (err, article){
  if (err) return next(err);
    if (!article) return next(new Error('Failed to load article ' + id));
    req.article = article;
    next();
});

它有效,但我想知道它们之间的主要区别,奇怪的是我无法找到关于mongoose docs的任何文档。

1 个答案:

答案 0 :(得分:2)

load是文章模型的静态方法,它与findOne完全相同,并且defined in the schema如下:

ArticleSchema.statics = {
  load: function (id, cb) {
    this.findOne({ _id : id }).populate('user').exec(cb);
  }
};

findById方法也调用findOne方法:

Model.findById = function findById (id, fields, options, callback) {
  return this.findOne({ _id: id }, fields, options, callback);
};