【发布时间】:2021-05-21 17:19:30
【问题描述】:
我制作了一个 seeder 文件以在 MongoDB 数据库中添加数据,但出现此错误,
Error : The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.
学生文件包含学生数据,学生文件是模型文件,
如果有人请帮助我...
Seeder.js
const students = require("./data/students");
const Student = require("./models/Student");
const dotenv = require("dotenv");
const connectDB = require("./config/db");
dotenv.config("../.env");
connectDB();
const importData = async () =>{
try{
await Student.deleteMany();
await Student.insertMany(students)
console.log("data imported");
process.exit();
}catch(err){
console.log("Error : "+err);
process.exit(1);
}
}
const destroyData = async () =>{
try{
await Student.deleteMany();
console.log("data destroyed");
process.exit();
}catch(err){
console.log("Error : "+err);
process.exit(1);
}
}
if(process.argv[2] === "-d"){
destroyData();
}else{
importData();
}
这是我的连接文件 db.js
const mongoose = require("mongoose");
const connectDB = async () =>{
try{
const conn = await mongoose.connect(process.env.ATLAS_URI,
{
useCreateIndex: true,
useNewUrlParser: true,
useUnifiedTopology: true
})
console.log(`mongoDB connected successfully`);
}catch (err){
console.log(`Error : ${err.message}`);
process.exit(1);
}
}
module.exports = connectDB;
【问题讨论】:
-
确保
mongoose.connect()接收到正确的参数。process.env.ATLAS_URI定义了吗? -
是的,它正在接收正确的参数,
process.env.ATLAS_URI也已定义
标签: javascript node.js mongodb express mongoose