【问题标题】:Express, Mongoose : OverwriteModelError : Cannot Overwrite 'xxxxx' model once compiledExpress,Mongoose:OverwriteModelError:编译后无法覆盖“xxxxx”模型
【发布时间】:2014-06-25 21:00:21
【问题描述】:

在我的程序中使用 Mongoose 模型时遇到错误。

我在代码的开头就这样做了:

var Schema = mongoose.Schema;
mongoose.connect('xxxxx');

我使用名为 userSchema 的第一个模式来连接/注册用户。

我有这段代码,它应该在我的数据库的奖励字段上随机执行。但是当我去 randTest 页面时,我有这个错误。我该如何解决?

app.get('/randTest', function(req,res) 
{
 var bonusSchema = new Schema({ 
 bonus : [String]
 });

var bonusModel = mongoose.model('Plateau', bonusSchema);  

var query = bonusModel.find(null);  
query.exec(function (err, allBonus){  
 if(err) { throw err;}

 var rand = Math.floor((Math.random() *allBonus.length)); 
 var result = allBonus[rand-1];        

});
res.render('randTest', {result: result});
});

在我的 Jade 文件中,我刚刚:

extends layout

block content

 script.
  alert({#result});

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    bonusModel 定义移到app.get 之外,使其只被调用一次:

    var bonusSchema = new Schema({ 
      bonus : [String]
    });
    
    var bonusModel = mongoose.model('Plateau', bonusSchema);  
    
    app.get('/randTest', function(req,res) 
    {
      var query = bonusModel.find(null);
      ...
    });
    

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 2019-01-13
      • 2013-10-03
      • 2014-08-03
      • 2015-04-25
      • 2017-06-22
      • 2017-10-04
      • 2022-08-21
      相关资源
      最近更新 更多