gpt4 book ai didi

node.js - 使用 mongoose 创建唯一的自动增量字段

转载 作者:IT老高 更新时间:2023-10-28 13:04:43 25 4
gpt4 key购买 nike

给定一个架构:

var EventSchema = new Schema({
id: {
// ...
},
name: {
type: String
},
});

我想让 id 独一无二且自动递增。我尝试实现mongodb implementation但是在理解如何在 Mongoose 中正确地做这件事上有问题。

我的问题是:在不使用任何插件等的情况下,在 Mongoose 中实现自动增量字段的正确方法是什么?

最佳答案

const ModelIncrementSchema = new Schema({
model: { type: String, required: true, index: { unique: true } },
idx: { type: Number, default: 0 }
});

ModelIncrementSchema.statics.getNextId = async function(modelName, callback) {
let incr = await this.findOne({ model: modelName });

if (!incr) incr = await new this({ model: modelName }).save();
incr.idx++;
incr.save();
return incr.idx;
};


const PageSchema = new Schema({
id: { type: Number , default: 0},
title: { type: String },
description: { type: String }
});


PageSchema.pre('save', async function(next) {
if (this.isNew) {
const id = await ModelIncrement.getNextId('Page');
this.id = id; // Incremented
next();
} else {
next();
}
});

关于node.js - 使用 mongoose 创建唯一的自动增量字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23199482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com