【问题标题】: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"

【问题讨论】:

标签: mongodb mongoose mongodb-query mongoose-schema


【解决方案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 代码块
猜你喜欢
  • 2015-04-06
  • 2023-03-19
  • 2016-10-16
  • 2017-06-01
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多