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

Node.js代码未写入指定Demo数据库,误写入Test数据库求助排查

问题原因与解决方案

你的代码会把数据写入Test数据库,核心问题是连接字符串未指定目标操作数据库:

  • 你设置的authSource=Demo仅代表身份验证时使用Demo数据库,但Mongoose在未明确指定操作数据库的情况下,会默认使用test数据库。

两种修复方式

方式一:修改连接字符串,直接指定目标数据库

在端口号后添加/Demo,明确指定要连接操作的数据库:

const mongoose = require('mongoose');

const main = async()=>{
    // 连接字符串末尾添加/Demo
    await mongoose.connect("mongodb://Demo:Demo@localhost:27017/Demo?authMechanism=DEFAULT&authSource=Demo",{useNewUrlParser: true, useUnifiedTopology: true})
    const ProductSchema = new mongoose.Schema({
        name : String,
        brand: String,
        price : Number
    });

    const ProductsModel = mongoose.model('demoProducts',ProductSchema)
    let data = new ProductsModel({name:"volvo",brand:"tata",price:18000});
    let result = await data.save()
    console.log(result);
}
main()

方式二:在连接配置中添加dbName参数

无需修改连接字符串,在connect的配置选项里指定数据库名称:

const mongoose = require('mongoose');

const main = async()=>{
    await mongoose.connect("mongodb://Demo:Demo@localhost:27017/?authMechanism=DEFAULT&authSource=Demo",{
        useNewUrlParser: true, 
        useUnifiedTopology: true,
        dbName: 'Demo' // 新增此配置项
    })
    const ProductSchema = new mongoose.Schema({
        name : String,
        brand: String,
        price : Number
    });

    const ProductsModel = mongoose.model('demoProducts',ProductSchema)
    let data = new ProductsModel({name:"volvo",brand:"tata",price:18000});
    let result = await data.save()
    console.log(result);
}
main()

修复后,数据会被写入Demo数据库的demoproducts集合(Mongoose会自动将模型名称转为小写复数形式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:25:24