MEAN - mongoose使用findById获取完整对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MEAN - mongoose使用findById获取完整对象相关的知识,希望对你有一定的参考价值。

我在这里遇到这个小问题/混乱......我实际上能够通过他们的_id使用findById(req.params.articleId)获得一篇文章

我的要求

router.get('/:articleId', function (req, res, next) {

    var decoded = jwt.decode(req.query.token);
    Article.findById(req.params.articleId, 'keyskeys')
    .populate('user')
    .exec( function (err, article) {
        console.log('see out article too', article)
        // if the ID is not found or invalid, return err
        if (err) {
            return res.status(500).json({
                title: 'An error occured',
                error: err
            });
        }
        // if the article was not found anyways
        if (!article) {
            return res.status(500).json({
                title: 'Article not found',
                error: { message: 'Article was not found!' }
            });
        }
          return res.json({
                success: true,
                message: 'successful :id',
                article: article,
            });
    });
});

邮递员正在返回200 ok,但返回的数据不仅仅是我想要它只返回objectID,而是我需要它来获取该特定Id的整个对象...

我在这里很困惑,用Google搜索,无法真正抓住某些东西......

邮差正在回归

{
    "success": true,
    "message": "successful :id",
    "article": {
        "_id": "5b0af26a0321733524c64c91"
    }
}

它应该返回类似的东西

{
        "_id" : ObjectId("5b0af26a0321733524c64c91"),
        "favoritesCount" : 33,
        "title" : "jfdkjkjgfkgfkll",
        "description" : "lkfgmfglkgfklgfk",
        "body" : "klmfl,,;lvk;lggpog,gf.,gf.gl.",
        "username" : "qqqq",
        "userId" : ObjectId("5b0af2500321733524c64c90"),
        "__v" : 0
}

任何帮助将不胜感激

答案

findById是Mongoose提供的模型的便捷方法,用于通过_id查找文档。它的文档可以在这里找到。

Example:

// Search by ObjectId
var id = "56e6dd2eb4494ed008d595bd";
UserModel.findById(id, function (err, user) { ... } );

在功能上,它与调用相同:

UserModel.findOne({_id: id}, function (err, user) { ... });

有关更多信息,请参阅此Similar Question Link

以上是关于MEAN - mongoose使用findById获取完整对象的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 渲染 findById

MEAN 应用程序中项目的单独页面

Mongoose 中的 Model.findById() - 异步/等待 [重复]

?????? Mongoose ???????(??:findById)

为啥不能修改 Mongoose 查询返回的数据(例如:findById)

更新 findOne()/find()/findById() 返回的文档 - mongoose