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

MongoDB报错‘insertOne is not a function’的原因及解决方法

问题原因与解决方法

错误根源

dbConnect是异步函数,直接执行const users = dbConnect()时,users拿到的是Promise对象,而非MongoDB的Collection实例,所以调用insertOne会提示不是函数。

修正后的代码

const dbConnect = async () => {
    try {
      await client.connect();
  
      const db = client.db('smile-tracker');
      const users = db.collection('users');
      return users;

    } catch (e) {
      console.log('Database connect error!');
      console.log(e);
      // 连接失败时返回null,避免后续调用出错
      return null;
    }
}

// 必须用await等待异步函数执行完成,拿到真正的Collection实例
const users = await dbConnect();
// 先判断users是否有效,再执行插入操作
if (users) {
  await users.insertOne({user: username});
}

额外注意事项

  • 这段代码必须放在async函数内部执行,顶级await需要特定环境支持(比如Node.js 14.8+或ES模块),如果是普通脚本,要把调用逻辑包裹在async函数里。
  • 之前能正常运行大概率是因为环境或代码结构变化,比如之前的调用是在async上下文里用了await,后来改动时漏掉了。

内容的提问来源于stack exchange,提问作者Глеб Савостьянов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:24:19