编译后无法覆盖搜索模型

时间:2014-09-14 12:16:12

标签: node.js mongodb express mongoose

我使用以下代码使用Node.js和MongooseJS搜索MongoDB数据库。

var express = require('express');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/searches');
var app = express();

app.set('view engine', 'ejs');

app.get('/', function(req, res){
    res.render('index');
});

app.get('/search', function(req, res){
    var keyword = req.query.q;
    var searchModel = mongoose.model('search', {
        title: String,
        keywords: String,
        desc: String,
        link: String
    }, 'search');
    searchModel.find(function(err, doc){
        if (err) throw err;
        res.send(doc);
    });
});

app.listen(9000, function(){
    console.log('Server listening on http://localhost:9000');
});

当我第一次运行时没有错误并返回所有记录。但是当我刷新页面时,我得到一个错误说:

  

编译后无法覆盖search模型

这可能是什么原因?

1 个答案:

答案 0 :(得分:1)

不能在app.get回调中定义模型,而是在文件的根级别定义。例如,在mongoose.connect之后立即。

模型在符合mongoose后存储在mongoose.model中。 第二次调用app.get回调时会发生的情况是,尝试再次编译已存在的模型,但这并不起作用。因此错误信息。