首页 文章

Mongoose - 检查.findOne()doc的每个键是否为ObjectId(引用的对象)

提问于
浏览
0

考虑到我只使用绝对文档,我得到了一个通用的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也是假的),所有其余的都是假的(包括给定的)属于参考,测试和工作的 property )

有没有办法做到这一点?

提前致谢

1 回答

  • 0

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

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

相关问题