猫鼬方法findOne花费的时间太长,有时返回的结果不确定

时间:2020-11-11 13:46:50

标签: javascript node.js mongodb mongoose

我先调用findOne来查找用户,然后我将其命令保存到我的可变命令中,然后返回该变量,有时它是未定义的。

const findAllCommands = async (user) => {
const commands = [];
const cache = await checkCache(user);
if (cache) {
  logger.info('Existing CACHE found!');
  return cache;
}
await User.findOne({ username: user }, (err, res) => {
if (err) {
  logger.error('ERROR: ' + err);
  throw new Error(err);
}
res.commands.forEach((v) => {
  commands.push(v);})
});

await addToCache(user, JSON.stringify(commands));
return commands;
};

1 个答案:

答案 0 :(得分:0)

每当我使用try catch语法时,我都会使用async await块。另外,如果只需要一个字段,则只能查询该字段。

const findAllCommands = async (user) => {
  try {
    const cache = await checkCache(user);
    if (cache) {
      logger.info('Existing CACHE found!');
      return cache;
    }
    const commands = await User.findOne({ username: user }, "commands");
    await addToCache(user, JSON.stringify(commands));
    return commands;
  } catch(error) {
    console.log(error)
  }
};