繁体   English   中英

Nodejs猫鼬-未定义模型

[英]Nodejs Mongoose - Model not defined

我正在尝试使用猫鼬将一些数据发送到数据库。 到目前为止,这是我的代码。

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(在models文件夹内)

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(在routes文件夹内)

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导出到wine.js(模型)中,难道我不能在任何地方使用它吗?

先感谢您 !

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

从节点模块导出对象/值/功能不会使它们在其他模块中全局可用。 导出的对象/值/函数从require中返回(更多信息请参考这里 )。 也就是说,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
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM