【问题标题】:Mongoose - Check if each key of .findOne() doc is a ObjectId (referenced object)Mongoose - 检查 .findOne() 文档的每个键是否是 ObjectId(引用对象)
【发布时间】:2016-03-12 01:54:58
【问题描述】:

考虑到我只使用绝对文档,我得到了一个适用于整个应用的通用 GET 函数。

现在我需要一些文档的某些属性引用其他文档,并且在执行时,GET 函数会填充它们(显然)。为此,我需要引用的架构,并使用引用的模型进行填充。

重点是:我希望我的 GET 函数保持通用,所以我不想引用我的任何模式,除非它是需要的。 .populate() 方法也是如此。

为了实现这一点,我正在遍历 .findOne() 方法的结果对象的每个键,并尝试检查每个特定键是否是 ObjectId/reference。像这样:

require('../schemas/mySchema').findOne({'slug': req.params.slug}, function(err, doc){
            console.log(mongoose.Types.ObjectId.isValid(doc[key]));
        });

但它返回的唯一真实值是“id”和“__v”属性(不知道这些来自哪里......我没有设置它们。_id 也是假的),其余的都是假的(包括作为参考、经过测试和工作的给定属性)

有什么办法吗?

提前致谢

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    我相信 mongoose 返回嵌套了 objectId 的引用 - 与填充对象的结构相同,但只有 _id 键。试试这个:

    var item = doc[key];
    if (typeof item === 'object') {
      console.log(mongoose.Types.ObjectId.isValid(item._id));
    }
    

    【讨论】:

    • 还是假结果=(
    猜你喜欢
    • 2014-09-11
    • 2017-05-28
    • 2013-11-13
    • 2012-06-05
    • 2022-01-13
    • 2021-02-14
    • 2019-07-02
    • 1970-01-01
    相关资源
    最近更新 更多