电影不是一个构造函数 – mongoose
我正在使用MEAN堆栈,并尝试使用Mongoose将数据保存到MongoDB数据库。 但是,我不断收到错误“电影不是构造函数”为我的模型。 但是,这是mongoose文件显示它,所以我不知道我在做什么错了..
请帮忙!
Movie.js
let mongoose = require('mongoose'); let MovieSchema = new mongoose.Schema({ title: String, genre: String }); export let Movie = mongoose.model("Movie", MovieSchema);
route.js
import express = require('express'); import mongoose = require('mongoose'); let Movie = require('../models/Movie'); let router = express.Router(); router.post('/movies', function(req, res, next) { let new_movie = new Movie(req.body); new_movie.save(function(err, movie) { if(err) return next(err); res.send(movie); }); });
用MoviereplaceMovie.js文件中的最后一行
let Movie = mongoose.model("Movie", MovieSchema); module.exports=Movie;
可能您的问题已经解决,但共享信息总是好的。
也许这会帮助别人:)
您可以使用以下方式创build您的模式:
const userSchema = new Schema({ userName: String, points: Number, userImage: String });
那么你需要使用mongoose.model
const user = mongoose.model('User', userSchema);
第一个参数是你的模型的集合的单数名称 。 mongoose自动寻找您的模型名称的复数版本。 因此,对于上面的示例, 模型User是针对数据库中的Users集合的 。
.model()函数生成模式的副本。
确保在调用.model()之前添加了要构造的所有模式
欲了解更多信息,你可以检查: mongooseSchematypes , mongoose模型
希望能帮助到你 … :)
当您忘记从模型文件中导出模型或以错误的方式导出时,会发生此问题。 你的模型应该像这样输出:
let Movie = mongoose.model("Movie", MovieSchema); module.exports=Movie;
或者简写一下,你可以简单地写:
module.exports=mongoose.model('Movie',MovieSchema);
你正在调用构造函数Movie.js
两次,一次在Movie.js
:
let Movie = new mongoose.Schema({...})
第二个是route.js
:
let new_movie = new Movie(req.body);
在Movie.js
之前删除Movie.js
中的new
关键字
也许可以在Movie.js
最后一行改为:
let Movie = module.exports = mongoose.model('Movie', MovieSchema);
在requirepath中使用整个文件名。 所以Movie.js而不是Movie。 因为你指向一个文件,而不是一个node_module。
let Movie = require('../models/Movie.js')