Пн goose: usr.findOneAndUpdate не является функцией - PullRequest
0 голосов
/ 06 апреля 2020

Ошибка: usr.findOneAndUpdate не является функцией

Модель:

var mongoose = require('mongoose')
var Schema = mongoose.Schema;
var bcrypt = require('bcrypt')

var schema = new Schema({
    email: { type: String, require: true },
    username: { type: String, require: true },
    password: { type: String, require: true },
    creation_dt: { type: String, require: true },
    tasks:[{type:{type:String}}]
}); 

module.exports = mongoose.model('User',schema)

Я хочу добавить некоторые задачи в массив задач, поэтому я использую метод post для этого и код is

Код:

router.post('/newTask', function (req, res, next) {
  var dataa = {
    pName: req.body.pName,
    pTitle: req.body.pTitle,
    pStartTime: req.body.pStartTime,
    pEndTime: req.body.pEndTime,
    pSessionTime: req.body.pSessionTime
  }

  var usr = new User(req.user)
  usr.findOneAndUpdate(
    {_id:req.user._id},
    {$push:{tasks:dataa}}
  )
  try {
    doc = usr.save();
    return res.status(201).json(doc);
  }
  catch (err) {
    return res.status(501).json(err);
  }
})

Я также прочитал документацию findOneAndUpdate, но я не могу найти решение, пожалуйста, кто-то может помочь из этой ошибки ....
Спасибо.

1 Ответ

0 голосов
/ 06 апреля 2020

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

Например, если у вас есть модель User, которая выглядит следующим образом:

// file is named user.js
const mongoose = require('mongoose')

const userSchema = new mongoose.Schema ({
    username: String,
    password: String
})

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

Вам необходимо импортировать модель, чтобы mon goose распознал ее как одну

Примерно так (при условии, что файл маршрутов и файл модели пользователя находятся в одном каталоге):

const User = require("./user")

router.post("/newTask", (req, res) => {
    User.findOneAndUpdate(//whatever you want to be updated)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...