node.js - 如何使用带有 mongodb 和 postman 的节点更新对象数组?
问题描述
我的对象是
{
"_id": "5fc49f48502ed001f437f49b",
"students": [
{
"_id": "5fc49f48502ed001f437f49c",
"name": "John",
"class: "5",
"age": "9"
},
{
"_id": "5fc49f48502ed001f437f49d",
"name": "Richa",
"class: "7",
"age": "13"
}
]
}
我的更新代码是:
router.put("/:id/:studetid", async (req, res) => {
try {
const student= await Student.update(
{ "students._id": req.params.studentid},
{
$set: {
"students.$.name": req.body.name,
"students.$.class": req.body.class,
"students.$.age": req.body.age,
},
}
);
当我选择 id 并更新任何值表单对象时,值更新成功但其他未更新的值设置为 null..
{
"_id": "5fc49f48502ed001f437f49b",
"students": [
{
"_id": "5fc49f48502ed001f437f49c",
"name": null,
"class: "6",
"age": null
},
}
请问谁能帮我解决这个问题...我想动态更新数据...我正在使用 Postman 发送数据
解决方案
您在 url 中有一个不正确的变量名。
router.put("/:id/:studetid", async (req, res) => {
应该
router.put("/:id/:studentid", async (req, res) => {
这将起作用
await Student.update(
{ "_id": req.params.studentid},
{
$set: {
"name": req.body.name,
"class": req.body.class,
"age": req.body.age,
},
}
);
推荐阅读
- javascript - 您是否需要在 Cloud Run 中等待进程以避免后台活动?
- php - 在 Sweetalert2 中,如何在 php 中使用输入的数据?
- java - MultipartFile 名称为空
- mysql - Mysql JSON 按键值更新
- javascript - 当浏览器窗口通过适当的最小最大规则变窄时响应框元素
- bokeh - 散景:一行中两个图的网格对齐
- ibm-cloud - IBM API Connect Gateway 脚本未执行
- python - 使用 CG 优化.minimize
- github-actions - 当拉取请求由另一个工作流操作创建并存在冲突时,Github 操作工作流不会在拉取请求上运行
- android-studio - Flutter RenderFlex 子节点具有非零 flex,但传入的高度约束是无界的。134像素错误?