[英]TypeError: User is not a constructor
我正在尝试使用 post 请求将用户保存到 mongodb 数据库,如下所示,但出现错误TypeError: User is not a function.
这是一个非常简单的代码设置,但我无法弄清楚它有什么问题。
我在用:
猫鼬 4.8.6
快递 4.15.2
节点 6.6
// models/user.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
email: {
type: String,
unique: true,
lowercase: true
},
password: String
});
// server.js
var User = require('./models/user');
app.post('/create-user', function(req, res, next) {
var user = new User(); // TypeError: User is not a constructor
user.email = req.body.email;
user.password = req.body.password;
user.save(function(err) {
if (err) return next(err);
res.json('Successfully register a new user');
});
});
您需要从您的UserSchema
创建model
,然后将其导出,然后您就可以创建新的 User 对象。
// models/user.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
email: {
type: String,
unique: true,
lowercase: true
},
password: String
});
module.exports = mongoose.model('User', UserSchema)
// models/user.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
email: {
type: String,
unique: true,
lowercase: true
},
password: String
});
var User = mongoose.model('User', UserSchema)
module.exports = { User } <-- capital 'U'
将小写的user
变量更改为大写(如下所示)奇怪地工作:
const User = mongoose.model('users');
我真的认为这只是一种最佳做法,但最终似乎是强制性的。
你得到那个错误是因为你错误地导出了模块,
在我的模型/用户中,我写了module.export
,最后省略了s
当你运行代码时,它会给你那个错误
我建议检查你的module.exports = mongoose.model('User', UserSchema)
拼写
更改此var user = new User();
对于这个var User = new User();
我也面临同样的错误,但这对我有用。
我确实更改了导出文件
var User = mongoose.model('User',userSchema);
module.exports = {User};
到
module.exports = mongoose.model('User', userSchema);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.