我有一个传递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"
它正在寻找“钥匙”,而不是您通过的钥匙。您可以通过执行以下操作来完成您要尝试的操作。
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)
}
});
您可以使用Computed property names来处理。示例:
const user = await UserSchema.findOne({
[key]: val
});