mongodb - 猫鼬当我使用更新时,它不会更新状态为 200(成功)的任何内容
问题描述
我使用更新查询在 Mongodb 的数组中推送一些数据,我在 nodeJs 中使用猫鼬。请任何人都可以帮助解决这个问题。
模型架构:
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 : []
});
module.exports = mongoose.model('User',schema)
所以我使用这个模式,我想在任务数组中推送数据,这是我用于推送数据的路由代码。
任务中更新数据的路线:
router.post("/newTask", isValidUser, (req, res) => {
addToDataBase(req, res);
});
async function addToDataBase(req, res) {
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.update({ email: req.user.email }, { $push: { tasks: dataa } });
console.log(req.user.email);
try {
doc = await usr.save();
return res.status(201).json(doc);
} catch (err) {
return res.status(501).json(err);
}
}
在这里,我创建了一个异步函数并在路由中调用该函数,但是当我使用邮递员发布数据时,它会以状态码 200(成功)响应,但它不会更新我的数据库中的任何内容。
输出截图:
解决方案
自从我做猫鼬以来已经有一段时间了,但我很确定我<model>.update()
也在积极更新 Mongo 的记录。
.update()
当您想更新 Mongo 中的现有记录时使用,但您正在实例化一个新模型User
(即创建一个新用户)
为新用户尝试以下代码:
router.post('/newTask', isValidUser, (req, res) => {
addToDataBase(req,res)
})
async function addToDataBase(req, res) {
var dataa = {
pName: req.body.pName,
pTitle: req.body.pTitle,
pStartTime: req.body.pStartTime,
pEndTime: req.body.pEndTime,
pSessionTime: req.body.pSessionTime
}
// email field is already in `req.user`
var usr = new User({ ...req.user, tasks: [dataa] });
console.log(req.user.email);
try {
await usr.save();
return res.status(201).json(doc);
}
catch (err) {
return res.status(501).json(err);
}
}
现在,如果您想更新现有记录:
router.post('/newTask', isValidUser, (req, res) => {
addToDataBase(req,res)
})
async function addToDataBase(req, res) {
var dataa = {
pName: req.body.pName,
pTitle: req.body.pTitle,
pStartTime: req.body.pStartTime,
pEndTime: req.body.pEndTime,
pSessionTime: req.body.pSessionTime
}
try {
await usr. updateOne({ email : req.user.email}, { $push: { tasks: dataa } });
return res.status(201).json(doc);
}
catch (err) {
return res.status(501).json(err);
}
}
欲了解更多信息,请阅读:https ://mongoosejs.com/docs/documents.html
推荐阅读
- javascript - 如何更改 Jupyter ipywidgets DatePicker 小部件的样式?
- java - 无法使用 GUI Java 从 MS Access 中删除数据
- javascript - Calendar.createEventAsync 在仅适用于 Android 的 Expo 上崩溃
- react-native - 反应原生地理定位服务更新太快?
- python - 不能使用带有图像类型的集合?
- python - 如何制作四个不同高度并具有一定比例的常用颜色的条形图
- http - 如何正确使用http.request
- android - 在 Kotlin 中查找所有出现的对象实例化
- python - Keras 模型中的采样 Softmax
- java - 遍历标签图并处理它们