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

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()
})

额外说明

  1. 确保已正确安装依赖:执行npm install mongoose-sequence
  2. 首次运行后,MongoDB会自动创建counters集合,用于记录递增字段的当前值,请勿手动修改该集合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:27:28