【发布时间】:2021-06-27 19:00:16
【问题描述】:
我有一个 js 文件 createMoreUsers.js,它从包含 userSchema 的 user.js 文件中导入 mongoose 模型。我希望一个数组来保存 firstName 和 lastName 的对象,但是当我开始使用 mongoose insertMany() 方法时,它只保存第一个对象,而不保存任何其他对象。
它改为输出以下错误。 发生错误:E11000 重复键错误集合:fcc-mail.users 索引:user_1 重复键:{用户:空}
user.js 文件
const mongoose = require('mongoose')
let userSchema = new mongoose.Schema({
firstName: String,
lastName: String
});
const User = mongoose.model('User', userSchema);
module.exports = User;
创建MoreUsers.js 文件
//requiring mongoose only to close the connection
const mongoose = require('mongoose');
//requiring the database file for connecting to the mongo db
const dbconnect = require('../database');
//create a new instance of the database connection
new dbConnect.Database();
//lets require the mongoose model
const UserModel = require('../models/user');
//creating an array of objects
let userArray = [
{firstName: 'Charles', lastName: 'Parker'},
{firstName: 'Thomas', lastName: 'Anderson'},
{firstName: 'William', lastName: 'Wallace'},
{firstName: 'Tin', lastName: 'Tin'}
]
UserModel.insertMany(userArray)
.then(function(docs){
console.log('All user documents are saved to the database', docs);
mongoose.connection.close();
})
.catch(function(err){
console.error('Error Occurred: ', err.message);
});
任何建议。总是非常感谢。
跟进 - 包括我的 database.js 文件
const mongoose = require('mongoose');
const server = 'localhost:27017';
const databaseName = 'fcc-mail';
class Database {
constructor() {
this._connect()
}
_connect() {
mongoose.connect(`mongodb://${server}/${databaseName}`, {useNewUrlParser: true, useCreateIndex: true, useFindAndModify: false, useUnifiedTopology: true})
.then(() => {
console.log('Database connection success');
})
.catch((err) => {
console.error('Database connection error', err);
})
}
}
module.exports.Database = Database;
如果我需要在 database.js 文件中使用 async/await,我该如何在类中使用?
【问题讨论】:
-
可能是因为你忘记了
let userSchema = new mongoose.Schema中的“新”二字 -
抱歉打错了。 new 关键字在原始代码中。谢谢
-
哦,现在我看到代码没有等到数据库连接(
.then()或await)
标签: javascript node.js mongodb mongoose