【问题标题】:Error: mongoose-auto-increment has not been initialized错误:mongoose-auto-increment 尚未初始化
【发布时间】:2016-06-24 22:31:54
【问题描述】:

我正在创建一个猫鼬模式,如下所示:

var adminSchema = new mongoose.Schema({
email:{type:String,unique:true,required:true},
passwordHash:{type:String},
isActivated:{type:Boolean},
admin_id:{type:Number,unique:true}
});

adminSchema.plugin(autoIncrement.plugin(),{model:'adminSchema',
field:'admin_id',
startAt:1,
incrementBy:1});

当我尝试运行应用程序时,我收到一条错误消息:

 if (!counterSchema || !IdentityCounter) throw new Error("mongoose-auto-increment has not been initialized");
                                      ^

Error: mongoose-auto-increment has not been initialized
at Object.exports.plugin (/Users/kumar/WebstormProjects/code-master/node_modules/mongoose-auto-increment/index.js:36:49)
at Object.<anonymous> (/Users/kumar/WebstormProjects/code-master/models/admin.js:22:34)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object.global.App.require (/Users/kumar/WebstormProjects/code-master/app.js:23:16)
at Object.global.App.model (/Users/kumar/WebstormProjects/code-master/app.js:32:21)
at init (/Users/kumar/WebstormProjects/code-master/app/initializers/passport.js:6:15)
at Object.<anonymous> (/Users/kumar/WebstormProjects/code-master/app.js:66:44)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)

我正在像这样初始化连接:

var mongoose = require('mongoose');
var autoIncrement = require('mongoose-auto-increment');

 function connect(connectionString){
mongoose.connect(connectionString);

var db = mongoose.connection;
autoIncrement.initialize(db);
db.on('error',console.error.bind(console,"Connection error"));
db.once('open',function callback(){
   console.log("Connection established via :"+connectionString);
});

}

这是我第一次使用 mongoose-aut-increment,因此我无法弄清楚我的错误,有人可以帮忙吗?

【问题讨论】:

    标签: node.js mongoose mongoose-plugins


    【解决方案1】:

    对您的代码进行以下更改:

    var mongoose = require('mongoose');
    
    var adminSchema = new mongoose.Schema({
      email: {type: String, unique: true, required: true},
      passwordHash: {type: String},
      isActivated: {type: Boolean},
      admin_id: {type: Number, default: 0, unique: true}
    });
    
    module.exports = mongoose.model('adminSchema', adminSchema);
    
    adminSchema.plugin(autoIncrement.plugin, {
      model: 'adminSchema',
      field: 'admin_id',
      startAt: 1,
      incrementBy: 1
    });
    

    实际上,您并没有初始化自动增量的值。因此,现在通过分配一个默认值为零(0),它肯定会每次都增加一。您可以根据需要更改默认值。

    【讨论】:

    • 嗨,现在我得到一个不同的错误说“错误:必须设置模型”
    【解决方案2】:

    这发生在我身上,因为执行此代码时,猫鼬没有完全连接到数据库。 我将代码更改为以下代码,它可以工作。

    var mongoose = require('mongoose');
    
    var adminSchema = new mongoose.Schema({
      email: {type: String, unique: true, required: true},
      passwordHash: {type: String},
      isActivated: {type: Boolean},
      admin_id: {type: Number, default: 0, unique: true}
    });
    
    module.exports = mongoose.model('adminSchema', adminSchema);
    autoIncrement.initialize(mongoose.connection); // This is important. You can remove initialization in different file
    adminSchema.plugin(autoIncrement.plugin, {
      model: 'adminSchema',
      field: 'admin_id',
      startAt: 1,
      incrementBy: 1
    });
    

    【讨论】:

      【解决方案3】:
      const mongoose = require('mongoose');
      
      Schema = mongoose.Schema,
      autoIncrement = require('mongoose-auto-increment');
      var connection = mongoose.createConnection("mongodb://localhost/mydatabase");
      autoIncrement.initialize(connection);
      
      
      constadminSchema = mongoose.Schema({
        email: {type: String, unique: true, required: true},
        passwordHash: {type: String},
        isActivated: {type: Boolean},
        admin_id: {type: Number, default: 0, unique: true}
      });
      module.exports = mongoose.model('adminSchema', adminSchema);
      
      adminSchema.plugin(autoIncrement.plugin, {
        model: 'adminSchema',
        field: 'admin_id',
        startAt: 1,
        incrementBy: 1
      });
      

      【讨论】:

      • 添加自动增量插件并在我的数据库中添加你的数据库名称
      猜你喜欢
      • 2020-05-25
      • 1970-01-01
      • 2021-09-25
      • 2013-10-21
      • 1970-01-01
      • 2016-06-12
      • 2012-02-23
      • 2016-07-17
      • 1970-01-01
      相关资源
      最近更新 更多