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

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 代码块

以上是关于如何在猫鼬中插入自动增量编号的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中自动创建必填字段

如何在猫鼬中进行原始 mongodb 操作?

如何在猫鼬中进行原始 mongodb 操作?

关于如何在猫鼬中编写评论模式的任何想法?

关于如何在猫鼬中编写评论模式的任何想法?

如何在猫鼬中转换为字符串?