编译后无法覆盖`events`模型

时间:2017-02-05 03:28:17

标签: javascript node.js mongodb

我已经将Schema定义如下,

Event.js

var mongoose = require('mongoose');
var eventSchema = new mongoose.Schema({
    description: {
        type: String        
    },
    end_time: {
        type: Date      
    },
    start_time: {
        type: Date      
    },
    name: {
        type: String    
    },
    place: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Location'
    }
});
eventSchema.index({name: 'text'});
var Event = mongoose.model('events', eventSchema);    
module.exports= Event;

使用以下一种方法,

 let configuration = require('../../commonservices/service');    
    var eventModel = require('./models/Event');
    var dbHelper = require('../../commonservices/dbHelper');
     module.exports = {   
         getEventsByCountry : function(event,context,callback){            
            var searchString =  event.queryStringParameters.searchParam?event.queryStringParameters.searchParam:'';            
             var countryString =  event.queryStringParameters.country?event.queryStringParameters.country:'';             
           dbHelper.query(eventModel, {$text: {$search: searchString},'place.location.country': countryString},function(error,data){
                        callback(data);       
           });
        }            
};

第一次执行方法时,当我第二次调用时发生以下错误,

  

{“errorMessage”:“加载时出错   usersCreate “ ”ERRORTYPE“: ”MongooseError“, ”堆栈跟踪“:[” OverwriteModelError:   编译后无法覆盖events模型。“,”在Mongoose.model   (E:\ TV-81 \服务\ node_modules \猫鼬\ lib中\ index.js:376:13)“

1 个答案:

答案 0 :(得分:0)

当Schema文件执行多次一次时,通常会触发此错误。

在mongoose连接之后需要所有模式文件,然后像这样使用它

Goal

在app.js中运行以下代码或在连接到mongodb后立即运行。这将加载所有模型一次,然后您可以使用about about snippet

中提到的每个模型
  mongoose = require('mongoose')
  eventModel = mongoose.model('events')

或者你可以在mongoose连接后用循环

来要求该模型