我调用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;
};
每当我使用async await
语法时,我都会使用try catch
块。另外,如果只需要一个字段,则只能查询该字段。
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)
}
};