Mongoose和新Schema:返回"ReferenceError:Schema未定义"

Lar*_*ard 16 mongoose mongodb node.js

我正在创建一个新的示例应用程序,我尝试通过Mongoose连接到MongoDB数据库.

我在我的service.js文件中创建了一个新的模式,但是当我运行时出现以下错误nodemon app.js:"ReferenceError: Schema is not defined"

App.js代码:

var http = require('http');
var express = require('express');
var serials = require('./service');
var app = express();
var mongoose = require('mongoose');


var port = 4000;
app.listen(port);

mongoose.connect('mongodb://localhost:27017/serialnumbers')

app.get('/api/serials',function(req,res){
    serials.getSerial(req, res, function(err, data) {
        res.send(data);
    });
});
Run Code Online (Sandbox Code Playgroud)

Service.js代码:

var mongoose = require('mongoose');

var serialSchema = new Schema({
    serial: {type: String},
    game: {type: String},
    date: {type: Date, default: Date.now},
});
mongoose.model('serials', serialSchema);

exports.getSerial = function(req,res,cb) {
    mongoose.model('serials').find(function(err,data) {
        cb(err,data);
    });
};
Run Code Online (Sandbox Code Playgroud)

我在StackOverflow上看到了一个答案,它引用了它可能是Mongoose的版本.但是npm list给我这个:

在此输入图像描述

知道我做错了什么吗?

anv*_*rik 31

确切地说,在你的Service.js,是什么Schema?您没有名为的对象Schema.

...
var serialSchema = new Schema({
                       ^^^^^^
Run Code Online (Sandbox Code Playgroud)

改变它mongoose.Schema然后它会没事的.

  • 或在var mongoose = reguire('mongoose');下添加`var Schema = mongoose.Schema;`。 (2认同)

小智 6

你忘了在你的第二行定义这样的架构

var Schema = mongoose.Schema


Ara*_*chi 5

发生这种情况的原因有多种。第一个是您可能忘记导入 Schema。您可以按如下方式修复该问题。

const Schema = mongoose.Schema;

const serialSchema = new Schema({
   serial: {type: String},
   game: {type: String},
   date: {type: Date, default: Date.now},
});
Run Code Online (Sandbox Code Playgroud)

有时您忘记导入新创建的模型。此类错误可以通过将创建的模型导入到工作文件中来解决。

const serialModel = mongoose.model('serials', serialSchema);
Run Code Online (Sandbox Code Playgroud)