电影不是构造函数 - Mongoose
Posted
技术标签:
【中文标题】电影不是构造函数 - Mongoose【英文标题】:Movie is not a constructor - Mongoose 【发布时间】:2016-12-12 22:52:12 【问题描述】:我正在使用 MEAN 堆栈并尝试使用 Mongoose 将数据保存到我的 MongoDB 数据库中。但是,我不断收到错误 我的模型的“电影不是构造函数”。但这就是猫鼬文档的显示方式,所以我不确定我做错了什么..
请帮忙!
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);
);
);
【问题讨论】:
您使用的是打字稿还是其他转译器? node.js 仍然不支持import
AFAIK。
你解决过这个问题吗?我遇到了同样的问题。 @JohnnyHK,我的 babel 转译器正在工作 :) 有什么想法吗?
【参考方案1】:
当您忘记从模型文件中导出模型或以错误的方式导出模型时,就会出现此问题。你的模型应该像这样导出:
let Movie = mongoose.model("Movie", MovieSchema);
module.exports=Movie;
或者您可以简写为:
module.exports=mongoose.model('Movie',MovieSchema);
【讨论】:
【参考方案2】:您的问题可能已经解决,但分享信息总是好的。
也许这会帮助其他人:)
您可以使用以下方法创建架构:
const userSchema = new Schema(
userName: String,
points: Number,
userImage: String
);
那么你需要使用mongoose.model
const user = mongoose.model('User', userSchema);
第一个参数是您的模型所使用的集合的单数名称。 Mongoose 会自动查找您的型号名称的复数形式。因此,对于上面的示例,模型 User 用于数据库中的 Users 集合。
.model() 函数会复制模式。
在调用 .model() 之前,请确保您已将所需的所有内容添加到架构中
更多信息可以查看:mongooseSchematypes,mongooseModels
希望对您有所帮助... :)
【讨论】:
【参考方案3】:将 Movie.js 文件中的最后一行替换为
let Movie = mongoose.model("Movie", MovieSchema);
module.exports=Movie;
【讨论】:
【参考方案4】:你调用构造函数mongoose.Schema
两次,一次在Movie.js
:
let Movie = new mongoose.Schema(...)
第二个在route.js
:
let new_movie = new Movie(req.body);
删除Movie.js
中mongoose.Schema
之前的new
关键字
也许将Movie.js
中的最后一行更改为:
let Movie = module.exports = mongoose.model('Movie', MovieSchema);
【讨论】:
【参考方案5】:在需要路径中使用整个文件名。所以 Movie.js 而不是 Movie。因为您指向的是文件,而不是 node_module。
let Movie = require('../models/Movie.js')
【讨论】:
以上是关于电影不是构造函数 - Mongoose的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Mongoose Schema 修复 GraphQL Mutation 中的构造函数错误 [重复]