猫鼬findOne变量

时间:2019-12-20 15:19:17

标签: mongodb mongoose

我有一个函数,该函数传递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"

2 个答案:

答案 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
});