node.js - 如何构建我的 Mongoose 模式以将用户的输入修补为数组中的对象?
问题描述
我的应用程序允许用户选择特定事件的日期。
每个“事件”文档都有一个“组”字段,其中包含一组对象,其中包含用户电子邮件和他们选择的日期。
我正在尝试在现有的“事件”文档中修补用户的日期输入。“事件”的架构如下:
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const userDatesSchema = new Schema({
email: {type:String},
startDate: {type:String},
endDate: {type:String},
},{
timestamps: false
});
const eventSchema = new Schema({
name: {type: String},
group: [userDatesSchema]
}, {
timestamps: true
})
以下是“事件”集合中的文档的样子:
_id:######################
group:Array
0:Object
_id:#####################
email:"testing@gmail.com"
startDate:"2021-05-11T16:00:00.000Z"
endDate:"2021-05-13T16:00:00.000Z"
name:"Event7"
createdAt:2021-05-07T00:51:17.704+00:00
updatedAt:2021-05-07T02:39:25.623+00:00
__v:0
用于修补用户选择的日期输入的 Mongoose 查询:
router.route('/update').patch((req,res)=>{
const email = req.user.email;
const startDate = req.body.startDate.startDate
const endDate = req.body.endDate.endDate
const userDates = {
email,
startDate,
endDate
}
Event.findOneAndUpdate({eventName: req.body.eventName}, {$push:{group: [userDates]}}, {new: true},(error, data)=>{
if (error) {
res.send(error);
console.log("errt:", error)
} else {
res.send(data);
console.log("result:", data)
}
})
})
不幸的是,当前设置此补丁的方式,每次都会创建一个新对象,从而导致单个用户的“组”字段中的日期有多个对象......
_id:######################
group:Array
0:Object
_id:#####################
email:"testing@gmail.com"
startDate:"2021-05-11T16:00:00.000Z"
endDate:"2021-05-13T16:00:00.000Z"
1:Object
_id:#####################
email:"testing@gmail.com"
startDate:"2021-06-19T16:00:00.000Z"
endDate:"2021-06-22T16:00:00.000Z"
name:"Event7"
createdAt:2021-05-07T00:51:17.704+00:00
updatedAt:2021-05-07T02:39:25.623+00:00
__v:0
如何修补用户已存在的对象中的日期,而不是创建具有更新日期的新对象?
解决方案
当前,您正在使用$push
将新文档推送到数组中。我建议获取相关的事件文档并更新日期或将新的 userDates 添加到组数组中。
推荐阅读
- reactjs - 有没有办法更改 DataGrid 中的工具栏按钮名称?
- c++ - 自然地产生一个 `EXCEPTION_FLT_DENORMAL_OPERAND` 异常
- php - laravel - 如何按与 WHERE 的关系计数排序
- android - 防止在移动版 Firefox 中输入字段焦点后放大
- php - Symfony/Doctrine - 使用 OneToMany 创建/更新实体
- javascript - puppeteer UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“getProperty”
- reactjs - 如何在功能组件中将输入值从子级传递给父级
- python - Python venv中没有无效脚本
- c# - 获取异常 - System.IO.IOException:找不到资源“view/notifications.xaml”
- fractions - 如何在 dafny 中证明分数加法