如何在猫鼬中插入自动增量编号
Posted
技术标签:
【中文标题】如何在猫鼬中插入自动增量编号【英文标题】:How to insert auto increment number in mongoose 【发布时间】:2020-11-09 20:44:01 【问题描述】:尝试使用 mongoose 和 nodejs 在 mongodb 中插入序列号的自动增量编号,但不起作用。我想在哪里更新我的代码以找到解决方案。如果有人知道,请帮助找到解决方案。
subs.model.js:
const mongoose = require('mongoose');
var subscriberSchema = new mongoose.Schema(
_id: type: String, required: true,
email:
type: String
,
versionKey: false,
collection: 'subscribers'
);
module.exports = mongoose.model('Subscribers', subscriberSchema);
data.controller.js:
module.exports.subscribeMail = (req, res, next) =>
var subscribeModel = mongoose.model("Subscribers");
var subscribemailid = req.query.email;
var subscribe = new subscribeModel(
email: subscribemailid
);
var entitySchema = mongoose.Schema(
testvalue: type: String
);
subscribe.save(function(error, docs)
if (error) console.log(error); else
console.log("subscribe mail id inserted");
console.log(docs)
res.json( data: docs, success: true );
);
entitySchema.pre('save', function(next)
var doc = this;
subscribe.findByIdAndUpdate( _id: 'entityId' , $inc: seq: 1 , function(error, counter)
if (error)
return next(error);
doc.testvalue = counter.seq;
next();
);
);
;
如果我使用上面的代码将数据插入 mongodb,如下所示:
_id:5f148f9264c33e389827e1fc
email:"test@gmail.com"
_id:6f148f9264c33e389827e1kc
email:"admin@gmail.com"
但我想这样插入
_id:5f148f9264c33e389827e1fc
serialnumber:1
email:"test@gmail.com"
_id:6f148f9264c33e389827e1kc
serialnumber:2
email:"admin@gmail.com"
【问题讨论】:
这能回答你的问题吗? Mongoose auto increment 【参考方案1】:你可以使用这个插件:https://www.npmjs.com/package/mongoose-auto-increment
首先你需要在创建 Mongoose 连接后对其进行初始化:
const connection = mongoose.createConnection("mongodb://localhost/myDatabase");
autoIncrement.initialize(connection);
比在您的 subs.model.js 文件中:
const mongoose = require('mongoose');
const autoIncrement = require('mongoose-auto-increment');
var subscriberSchema = new mongoose.Schema(
_id: type: String, required: true,
email:
type: String
,
versionKey: false,
collection: 'subscribers'
);
subscriberSchema.plugin(autoIncrement.plugin,
model: 'Subscribers',
field: 'serialnumber'
);
module.exports = mongoose.model('Subscribers', subscriberSchema);
【讨论】:
我已经像这样连接了 mongodb mongoose.connect(process.env.MONGODB_URI, (err) => if (!err) console.log('MongoDB connection succeeded.'); else console.log('MongoDB 连接错误:' + JSON.stringify(err, undefined, 2)); ); 所以我想在哪里添加这段代码: const connection = mongoose.createConnection("mongodb://localhost/myDatabase"); autoIncrement.initialize(connection); 你的概念不起作用..需要更新 data.controller.js 吗? 在这种情况下,您可以使用 mongoose.connection 代替 connection。更多信息:mongoosejs.com/docs/connections.html#multiple_connections 关于您的控制器,不需要 entitySchema 代码块以上是关于如何在猫鼬中插入自动增量编号的主要内容,如果未能解决你的问题,请参考以下文章