[英]Mongoose : usr.findOneAndUpdate is not a function
錯誤:usr.findOneAndUpdate 不是 function
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.