我有一个通用的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也是假的),所有其余的都是假的(包括作为参考,测试和工作的给定属性
有没有办法做到这一点?
提前致谢
答案 0 :(得分:0)
我相信mongoose会返回带有objectId嵌套的引用 - 与填充对象的结构相同但只有_id键。试试这个:
var item = doc[key];
if (typeof item === 'object') {
console.log(mongoose.Types.ObjectId.isValid(item._id));
}