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

Node.js使用Mongoose连接MongoDB时默认写入test库而非School库如何解决

问题根因

连接配置中没有显式指定要操作的目标数据库,MongoDB 驱动默认会连接test库,因此所有插入操作都写入了默认库,没有落到你预期的School库。

修复方案

以下两种方案选一种即可,推荐优先修改连接串,配置更集中。

方案1:直接修改数据库连接URL

在连接串的集群地址末尾、查询参数(以?开头的配置段)之间,加上目标数据库名School即可。
修改前的连接串:

DATABASE_URL=mongodb+srv://myusername:mypassword@cluster0.<7 letter word>.mongodb.net/?retryWrites=true&w=majority

修改后的连接串:

DATABASE_URL=mongodb+srv://myusername:mypassword@cluster0.<7 letter word>.mongodb.net/School?retryWrites=true&w=majority

注意:不要多写多余斜杠,数据库名直接放在斜杠和问号的中间位置即可。

方案2:在Mongoose连接配置中显式声明数据库名

如果不想改动连接串,也可以在mongoose.connect的第二个配置参数中添加dbName字段指定目标库。另外你代码里写的useNewURLParser存在拼写错误,正确配置项为useNewUrlParser(Url的l为小写),修正后的完整连接代码如下:

//database
const mongoose = require("mongoose");
mongoose
  .connect(process.env.DATABASE_URL, { 
    useNewUrlParser: true,
    dbName: "School" // 显式指定目标数据库为School
  })
  .then(() => {
    console.log("Database connected");
  })
  .catch((err) => console.log(err));
验证步骤

修改完成后重启Node服务,执行一次插入操作,到MongoDB集群控制台查看School库下的对应集合,就能看到新写入的数据,不会再写入test库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:33:30