You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Mongoose将model.findOne()的查询结果保存到变量中

解决mongoose中model.findOne()返回pending Promise的问题

你遇到的问题是因为Product.findOne()是异步操作,它会立刻返回一个处于pending状态的Promise,此时数据库查询还没完成,所以直接打印变量只能看到未完成的Promise。

下面是两种可行的解决方式:

方式一:使用async/await(推荐,代码更易读)

async function fetchProduct() {
  // await会等待Promise完成,把查询结果赋值给key
  let key = await Product.findOne({ name: 'keyboard' });
  console.log(key);
  // 在这里把key传给其他函数使用
  yourOtherFunction(key);
}

// 调用这个async函数
fetchProduct();

注意:await必须放在标记了async的函数内部使用,不能直接在全局作用域使用(除非是ES模块的顶层await场景)。

方式二:在.then回调中处理结果

Product.findOne({ name: 'keyboard' }).then(data => {
  let key = data;
  console.log(key);
  // 直接在回调里调用其他函数使用key
  yourOtherFunction(key);
});

这种方式是利用Promise的回调机制,当数据库查询完成后,会自动执行then里的回调函数,此时data就是最终的查询结果。

内容的提问来源于stack exchange,提问作者user19359397

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:30:54