我已经定义了一个moogoose模式如下:
var UserSchema = new mongoose.Schema({
google: Object,
github: Object,
linkedin: Object,
facebook: Object,
microsoft: Object,
twitter: Object
});
所有这些属性都应包含子属性id
。因此,如果profile
发送了loginSuccessfully
,我想找到id
(根据profile.provider
)与profile.id
匹配的文档。
但是,传统的.find({ "...": profile.id }, (err, users) => ... )
无法表达profile.provider
的动态情况。
有谁知道如何编写这个mongoose查询?
答案 0 :(得分:0)
如果您尝试在所有提供商中查找ID,可以使用$or
:
.find(
{ $or: ["google", "github", "linkedin", "facebook", "microsoft", "twitter"].map(p=>({[p + ".id"]: profile.id})) },
(err, users) => ...
)
对于单个已知提供商,它是传统:
.find(
{ [provider + ".id"]: profile.id },
(err, users) => ...
)