簡體   English   中英

ZCCADCDEDB567ABAE643E15DCF0974E503Z:usr.findOneAndUpdate 不是 function

[英]Mongoose : usr.findOneAndUpdate is not a function

錯誤:usr.findOneAndUpdate 不是 function

Model:

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 方法,代碼是

代碼:

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 的文檔,但我沒有得到解決方案,請有人可以幫助解決這個錯誤....
謝謝你。

您需要將 model 導入到包含您的路線的文件中。 所有 mongoose 方法都基於您定義的架構,而不是您創建的新實例。

例如,如果您有一個如下所示的用戶 model:

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

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

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

您需要導入 model 以便 mongoose 將其識別為一個

像這樣(假設路由文件和用戶 model 文件在同一目錄中):

const User = require("./user")

router.post("/newTask", (req, res) => {
    User.findOneAndUpdate(//whatever you want to be updated)
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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