我有一个函数,该函数传递key
val
,然后被添加为.findOne()
猫鼬函数的参数。
getByKey = async (key, val) => {
console.log(key, val);
const user = await UserSchema.findOne({
key: val
});
console.log(user);
return user;
};
问题是,我认为猫鼬实际上是在集合中搜索单词key
而不是它的含义,即"username"
或"age"
答案 0 :(得分:0)
它正在寻找“密钥”,而不是您通过的密钥。您可以通过执行以下操作来完成您要尝试的操作。
var query = {}
query[key] = value;
然后将该查询传递给您的findOne
函数。见下文。
getByKey = async (key, val) => {
var query = {}
query[key] = value;
const user = await UserSchema.findOne(query);
console.log(user);
return user;
};
您还可能要考虑在findOne
中添加回调函数,并尝试记录发现的数据。
const user = await UserSchema.findOne(query, function(err, data){
if (err){
console.log(err)
} else {
console.log(data)
}
});
答案 1 :(得分:0)
您可以使用Computed property names处理此问题。示例:
const user = await UserSchema.findOne({
[key]: val
});