MongoDB云数据库自动递增ID字段失效问题求助
解决Mongoose自动递增personId字段不生成的问题
你的代码核心问题是插件挂载顺序错误:先基于Schema创建了Person模型,之后才给Schema挂载AutoIncrement插件,这会导致插件无法对模型生效,自然不会自动生成personId。
修正步骤
将personSchema.plugin(AutoIncrement, {inc_field: 'personId'})这行代码,移到创建Person模型之前。
修正后的完整代码
const mongoose = require('mongoose') const AutoIncrement = require('mongoose-sequence')(mongoose); if (process.argv.length<3) { console.log('请传入密码作为参数') process.exit(1) } const password = process.argv[2] const url = `mongodb+srv://user:${password}@phonebook.plvo5px.mongodb.net/phonebookApp?retryWrites=true&w=majority` mongoose.set('strictQuery',false) mongoose.connect(url) const personSchema = new mongoose.Schema({ name: String, number: String, personId : { type : Number, unique: true // 可选,保证personId唯一性 } }); // 先挂载插件,再创建模型 personSchema.plugin(AutoIncrement, {inc_field: 'personId'}); const Person = mongoose.model('Person', personSchema) const person = new Person({ name: `test2`, number: `0717323171` }) person.save().then(result => { console.log('联系人已保存!') mongoose.connection.close() })
额外说明
- 确保已正确安装依赖:执行
npm install mongoose-sequence - 首次运行后,MongoDB会自动创建
counters集合,用于记录递增字段的当前值,请勿手动修改该集合
内容的提问来源于stack exchange,提问作者Dragos123
相关产品推荐
相关产品推荐

