我正在尝试使用mongoose将一些数据发送到数据库。到目前为止,这是我的代码。
server.js
var express = require('express');
var wine = require('./routes/wines');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var app = express();
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
app.get('/wines', wine.findAll);
app.get('/wines/:id', wine.findById);
app.listen(3000);
console.log('Listening on port 3000...');
wine.js(在模特文件夹内)
var mongoose = require('mongoose');
var db = mongoose.connection;
var wineSchema = new mongoose.Schema({
name: String,
description: String
});
var Wine = mongoose.model('Wine', wineSchema);
module.exports = Wine;
wines.js(在路线文件夹内)
exports.addWine = function(req, res) {
// Problem not defined here
var silence = new Wine({ name: 'Silence', description:"cena" })
console.log(silence.name) // 'Silence'
// add it to the database
};
我一直收到这个错误,我不明白为什么。
ReferenceError: Wine is not defined
我在wine.js(型号)中导出Wine,我不应该到处使用它吗?
提前谢谢!
答案 0 :(得分:2)
在var Wine = require('./../models/wine.js');
的开头添加wines.js
(假设您的routes
和models
文件夹包含在同一目录中。)
答案 1 :(得分:1)
从节点模块导出对象/值/函数不会使它们在其他模块中全局可用。导出的对象/值/函数从require
返回(参考here以获取更多信息)。也就是说,Mongoose为模型和模式使用内部全局缓存,使其可以通过整个应用程序中的mongoose(或连接)使用。
因此,在您的路线文件中,您可以执行以下操作:
var Wine = mongoose.model('Wine'); // Notice we don't specify a schema
exports.addWine = function(req, res) {
var silence = new Wine({ name: 'Silence', description:"cena" })
console.log(silence.name) // 'Silence'
// add it to the database
};