Попытка добавить нового пользователя в базу данных (MongoDB), получая эту ошибку

Я пытаюсь сохранить пользователя в базе данных MongoDB с помощью пост-запроса следующим образом, но я получил ошибку TypeError: Пользователь не является функцией. Я не могу понять, что-то не так с этим. В выводе говорится, что в строке присутствует ошибка "const user = new User (req.body);" вывод почтальона

моя userchema неправильно или метод экспорта неверен.

const User = require("../models/user");

exports.signup = (req, res) => {
  const user = new User(req.body);
  user.save((err, user) => {
    if (err) {
      return res.status(400).json({
        err: "NOT able to save user in DB"
      });
    }
    res.json({
      name: user.name,
      email: user.email,
      id: user._id
    });
  });
};

exports.signout = (req, res) => {
  res.json({
    message: "User signout"
  });
};


//user schema
var mongoose = require("mongoose");
const crypto = require('crypto');
const uuidv1 = require('uuid/v1');


var userSchema = new mongoose.Schema({
    name:{
        type:String,
        required:true,
        maxlenght:32,
        trim: true
    },
    lastname:{
        type: String,
        maxlenght:32,
        trim: true
    },
    email:{
        type: String,
        trim: true,
        required: true,
        unique:true
    },
    userinfo:{
        type:String,
        trim:true
    },
    encry_password:{
        type:String,
        required: true,
    },
    salt:String,
    role:{
        type:Number,
        default:0,
    },
    purchases :{
        type:Array,
        default:[]
    }

} ,{ timestamps: true } );

userSchema.virtual("password")
    .set(function(password){
        this._password = password;
        this.salt = uuidv1();
        this.encry_password = this.securePassword(password);
    })
    .get(function(){
        return this._password;
    })

userSchema.methods = {
        authenticate: function(plainpassword){
            return this.securePassword(plainpassword) === this.encry_password;
    },

    securePassword: function (plainpassword){
        if(!plainpassword) return "";
        try {
            return crypto.createHmac('sha256',this.salt)
            .update(plainpassword)
            .digest('hex');
        } catch (err) {
            return "";
        }
    }
};




module.export = mongoose.model("User",userSchema)

Всего 1 ответ


Вот проблема с кодом.

Строка 1: постоянный const user = new User(req.body);

Строка 2: user.save((err, user) => {

JS теперь запутался в user который является константой переменной user которая является возвращаемым значением действия сохранения.

Таким образом, чтобы избавиться от этого, переименуйте возвращаемое значение действия сохранения во что-то другое, например responseUserObj . Таким образом, ваши две строки кода должны быть

const user = new User(req.body);
        user.save((err, responseUserObj) => {

Удачного кодирования.


Есть идеи?

10000