简体   繁体   English

Mongoose 方法 findOne 耗时太长,有时返回 undefined

[英]Mongoose method findOne takes too long and returns sometimes undefined

Im calling findOne to find a user and then Im saving his commands into my variable commands, which I return and it is sometimes undefined.我调用 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;
};

I use a try catch block whenever I use async await syntax.每当我使用async await语法时,我都会使用try catch块。 Also if you need only one field you can query only for that field.此外,如果您只需要一个字段,则只能查询该字段。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM