猫鼬findOne变量

问题描述 投票:0回答:2

我有一个传递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"

mongodb mongoose
2个回答
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)
    }
});

0
投票

您可以使用Computed property names来处理。示例:

const user = await UserSchema.findOne({
    [key]: val
});
© www.soinside.com 2019 - 2024. All rights reserved.