未找到自动增量插件 nextCount

Posted

技术标签:

【中文标题】未找到自动增量插件 nextCount【英文标题】:Auto increment plugin nextCount not found 【发布时间】:2018-06-18 03:13:48 【问题描述】:

我正在使用 mongoose-auto-increment 插件,我正在使用 TypeScript Node.js,并且我已经安装了所需的类型定义,但是当我尝试获取自动增量的下一个计数时,我得到了这个

Property 'nextCount' does not exist on type 'Model<Document>'

我的模式是示例中的模式:

let bookSchema = new Schema(
    author:  type: Number, ref: 'Author' ,
    title: String,
    genre: String,
    publishDate: Date
);

bookSchema.plugin(autoIncrement.plugin, 'Book');
var Book = connection.model('Book', bookSchema);

//// error here
Book.nextCount(function(err, count) 
);

我的 tsconfig.json 是这样的


  "compilerOptions": 
    "types" : ["node", "socket.io"],
    "module": "commonjs",
    "experimentalDecorators": true,
    "target": "es2015",
    "lib": ["es2015", "es2017", "dom"]
  ,
  "include": [
    "**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ]

【问题讨论】:

你在使用 mongoose-auto-increment 插件吗? 是的,我也安装了这个。 npmjs.com/package/@types/mongoose-auto-increment 插件最后一次更新是在 4 年前。你能解释一下为什么需要这个插件吗?我们可以通过更多的自定义手动做同样的事情 好吧,我想要一个自动增量 ID,我在这里存储聊天消息,一旦有大约 50 条消息,我就会推送到数据库。如果用户想要编辑或删除我需要一个参考 id 并且我知道默认情况下 mongo 中有 _id 但由于我没有推送每条消息,我需要一个自动增量部分。 更不用说我使用猫鼬了,所以。 【参考方案1】:

在保存批次之前,只需使用ObjectId 并为每条聊天消息设置_id

const mongoose = require('mongoose');
const ObjectId = mongoose.Types.ObjectId;

messages.forEach(message => 
  message._id = message._id || ObjectId()
)

// call you method which save batches
saveBatch(messages)

【讨论】:

以上是关于未找到自动增量插件 nextCount的主要内容,如果未能解决你的问题,请参考以下文章

自动增量未写入对象

postgres 自动增量未在显式 id 插入时更新

如何在猫鼬中插入自动增量编号

NestJs/Mongoose 中的自动增量序列

egret(旧版本)自动增量编译

在 Oracle 中定义自动增量时插入触发器的行为