schema.methods не является функцией - PullRequest
0 голосов
/ 10 марта 2020

Я пытался создать метод в своей пользовательской схеме в mon goose, однако он продолжает говорить, что метод не является функцией, и я понятия не имею, почему. Я довольно плохо знаком с mon goose и express, и я почти уверен, что мои файлы настроены в настоящее время, поэтому я не знаю, что может быть причиной этой проблемы. В качестве последней попытки я попытался переключиться на функции стрелок, но это тоже не сработало.

файл пользовательских маршрутов

const router = require("express").Router();
let user = require("../models/user_model");
const Joi = require("@hapi/joi");
// GET dreams
// POST dreams
// DELETE dreams
// UPDATE dreams
router.route("/").get((req, res) => {
  console.log(user.addType());
  res.send("hello this is a users page");
});

файл модели пользователя

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const userSchema = new Schema(
  {
    username: {
      type: String,
      required: true,
      unique: true,
      trim: true,
      min: 3
    },
    password: {
      type: String,
      trim: true,
      required: true,
      min: 6
    }
  },
  {
    timestamps: true
  }
);
userSchema.methods.addTypes = function() {
  console.log("woof");
};
userSchema.methods.joiValidate = data => {
  let Joi = require("@hapi/joi");
  const schema = {
    username: Joi.string()
      .min(6)
      .required(),
    password: Joi.string()
      .min(6)
      .required()
  };
  return schema.validate(data);
};

module.exports = mongoose.model("User", userSchema);

1 Ответ

0 голосов
/ 10 марта 2020

ОБНОВЛЕНИЕ! Кроме наличия опечатки в вашем коде, вам также необходимо создать экземпляр вашей модели ('user'). Вы не можете просто вызвать функцию модели.

let user = new user({ // Create an instance first
    username: 'Tester',
    password: '12345678'
})
console.log(user.addType())

Вы заявили

addTypes()

Приветствия

...