![](/img/trans.png)
[英]How do I post an HTML class into a mongoDB collection using express/mongoose and client-side JS?
[英]Using express and mongoose, how do I send an array of multiple IDs from the client-side to server-side using a POST route?
我有一个简单的 CRUD 应用程序,使用 express、mongoose 和 EJS。 在 index.EJS 页面中,我有一个表格,显示每个产品的每一行都有复选框,每个复选框都有产品的 _ID。 我有一个 Delete Selected 按钮,它调用一个函数,该函数将所有选中的条目放入一个数组中,该数组本质上变成了一个我想要删除的 ID 数组。 然后我想使用 deleteMany 和 $in 方法从我的数据库中删除这些条目,如下所示:
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 文件访问我的 Product 模型或我的数据库。 我只能通过我的服务器端 index.JS 文件访问它们。 所以似乎我需要一种方法将 post 请求发送回 index.js,以便我可以在那里执行数据库功能。 当然,这就是我处理所有其他路由的方式,例如单个条目的 get、delete 和 puts。 但我不知道如何处理多个条目的数组。
第一个问题:如何发送和解析该数组?
第二个问题:我实际上如何从这个函数中提交一个发布请求? 我没有表单,并且尝试通过 URI 进行操作是没有意义的,因为我有一个 ID 数组,而不是一个 :id 作为参数。 我不希望它们都出现在 URI 中。 我在想我必须把一个隐藏的表单组合在一起,用数组填充 name 字段,然后用函数调用 form.submit() 。 但这似乎非常非常笨拙。
如果我表达错误或笨拙,请提前道歉,我只是在学习 express/mongoose。
这是一项非常简单和基本的任务,我强烈建议您阅读 express.js 文档。 您应该在服务器端添加一个 post 路由器,并使用fetch 、 axios或其他库和工具发出请求。 你应该做这样的事情:
在您的index.js
(服务器端)中:
app.post('/deleteMany' ,(req,res) => {
const toDelete = req.body.toDelete
await Product.deleteMany({_id: {$in: toDelete}})
res.send('deleted') // or whatever
})
注意:您需要在 Express 应用程序中使用body-parser才能获得req.body
。
在您的 ejs 文件(前端)中:
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 })
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.