首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用express和mongoose,如何使用POST路由将多个I数组从客户端发送到服务器端?

使用express和mongoose,如何使用POST路由将多个I数组从客户端发送到服务器端?
EN

Stack Overflow用户
提问于 2021-10-17 08:04:14
回答 1查看 32关注 0票数 0

我有一个简单的CRUD应用程序,使用express,mongoose和EJS。在index.EJS页面中,我有一个表格,它显示每种产品,每一行都有复选框,每个复选框都有产品的_ID。我有一个delete Selected按钮,它调用一个函数,将所有选中的条目放入一个数组中,该数组实际上变成了我想要删除的I数组。然后,我想使用deleteMany和$in方法从我的数据库中删除这些条目,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 async function deleteMany() {
  const toDelete = []
  const checkboxes = document.querySelectorAll('input[type="checkbox"]')
            for (let checkbox of checkboxes) {
                if (checkbox.checked == true) {
                    toDelete.push(checkbox.value)
                }
            }
            await Product.deleteMany(
                {
                    _id: {
                        $in: toDelete
                    }
                }
            )
        }

问题是,我无法从index.ejs文件访问我的产品模型或数据库。我只能通过我的服务器端index.JS文件访问它们。因此,我似乎需要一种方法将post请求发送回index.js,这样我就可以在那里执行数据库功能。当然,这就是我处理所有其他路由的方式,比如get、delete和puts。但是我不知道如何处理一个包含多个条目的数组。

第一个问题:如何发送和解析该数组?

第二个问题:如何在此函数中实际提交post请求?我没有表单,而且尝试通过URI来实现也没有任何意义,因为我有一个id数组,而不是参数的:id。我不希望它们都出现在URI中。我想我必须拼凑一个隐藏的表单,用数组填充name字段,然后用函数调用form.submit()。但这看起来非常非常笨拙。

提前道歉如果我表达错误或笨拙,我只是在学习express/mongoose。

EN

回答 1

Stack Overflow用户

发布于 2021-10-17 08:43:27

这是一个非常简单和基本的任务,我强烈建议您阅读express.js文档。您应该在服务器端添加post路由器,并使用fetchaxios或其他库和工具发出请求。你应该这样做:

在您的index.js (服务器端)中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.post('/deleteMany' ,(req,res) => {
  const toDelete = req.body.toDelete
  await Product.deleteMany({_id: {$in: toDelete}})
  res.send('deleted') // or whatever
})

注意:为了获得req.body,你需要在你的express应用中使用body-parser

在你的ejs文件中(前端):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
async function deleteMany() {
  const toDelete = []
  const checkboxes = document.querySelectorAll('input[type="checkbox"]')
  for (let checkbox of checkboxes) {
    if (checkbox.checked == true) {
      toDelete.push(checkbox.value)
    }
  }
  await fetch("server-url/deleteMany", {
    method: "POST",
    body: JSON.stringify({ toDelete })
  })
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69606178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文