簡體   English   中英

類型錯誤:用戶不是構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM