ActionHero js with Mongoose



我正在使用ActionHero js和Mongoose创建一些rest API。我把Mongoose代码放到了初始化器中,一切都工作了。当我修改一些文件的项目自动重新编译,它返回以下错误:OverwriteModelError:

编译后不能覆盖User模型。

我应该如何编辑我的代码来避免这个错误?使用严格的;

var mongoose   = require('mongoose');

exports.mongo = function(api, next) {
    mongoose.connect(api.config.mongo.host);
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function callback () {
        console.log('Connection opened');
    });
    var Schema = mongoose.Schema,
        Types = mongoose.Schema.Types;
    var userSchema = mongoose.Schema({
        createdAt: { type: Date, default: Date.now(), required: true},
        updatedAt: { type: Date, required: false},
        email: { type: String, required: true },
        name: { type: String, required: true },
        surname: { type: String, required: true },
        password: { type: String, required: true },
        roles: [],
        tokens: [{
            code: String,
            expiryDate: { type: Date, default: Date.now() + 30 }
        }]
    });

    var User = mongoose.model('User', userSchema);
    var postSchema = mongoose.Schema({
        createdAt: { type: Date, default: Date.now(), required: true},
        updatedAt: { type: Date, required: false},
        content: { type: String, required: true },
        votes: { type: [Types.ObjectId], ref: 'User' } ,
        coordinates: { type: [Number], index: { type: '2dsphere' }, required: true },
        creator: { type: Schema.Types.ObjectId, ref: 'User', required: true }
    });

    var Post = mongoose.model('Post', postSchema);
    api.mongo = {
        mongoose: mongoose,
        user: User,
        post: Post
    };
    next();
};

actionhero将重载任何初始化器,如果你是在开发模式。您应该将连接步骤包装在_start()块中,而不是让它们每次都内联运行。这样,actionhero就可以重新加载文件,而不必重新运行你的连接步骤。

http://actionherojs.com/docs/core/initializers.html

最新更新