我使用以下代码使用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
模型
这可能是什么原因?
答案 0 :(得分:1)
不能在app.get
回调中定义模型,而是在文件的根级别定义。例如,在mongoose.connect
之后立即。
模型在符合mongoose
后存储在mongoose.model
中。
第二次调用app.get
回调时会发生的情况是,尝试再次编译已存在的模型,但这并不起作用。因此错误信息。