Nodejs Mongoose – 模型未定义

我试图用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,我不应该能够在任何地方使用它吗?

先谢谢你 !

添加var Wine = require('./../models/wine.js');wines.js的开头(假设你的routesmodels文件夹包含在同一个目录中)。

从节点模块中导出对象/值/函数不会使其在其他模块中全局可用。 导出的对象/值/函数从require中返回(参考这里获取更多信息)。 也就是说,Mongoose使用一个内部的全局caching模型和模式,使其通过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 };