2016-03-10 37 views
3

我創建一個貓鼬架構如下:錯誤:貓鼬,自動遞增尚未初始化

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) 

我正在initiliazing這樣的連接:

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); 
}); 

} 

這是我的貓鼬,AUT增量第一炮,他我無法弄清楚我的錯誤,有人可以幫忙嗎?

回答

0

化妝以下更改代碼:

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),它肯定會每次增加1。您可以根據需要更改默認值。

+0

嗨,現在我得到一個不同的錯誤說「錯誤:模型必須設置」 – kumarD

+0

@kumarD現在看到的,如果你得到錯誤 –

+0

是的,我得到的錯誤 – kumarD

3

這發生在我身上,因爲執行此代碼時,貓鼬未完全連接到數據庫。 我將代碼更改爲以下,並且工作正常。

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 
}); 
0
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 
}); 
+0

添加自動遞增的插件,並添加你的數據庫名稱在mydatabase –

相關問題