我使用下面的HTML表单将对象数组发送到我的NodeJS/Express后端(我正在使用PUG),

each val in [1, 2]
                div(class = "row")
                    div(class= "col")
                        select(class="form-select" name = "items[][service]")
                            each service in services
                                option(value=service._id) #{service.name}                
                    div(class= "col")
                        input(type="text" name="items[][description]" class='form-control mb-4' placeholder="Description")
                    div(class= "col")
                        input(type="text" name="items[][amount]" class='form-control mb-4' placeholder="QTY")
                    div(class= "col")
                        input(type="text" name="items[][price]" class='form-control mb-4' placeholder="Price")
                    div(class= "col")
                        input(type="text" name="items[][subtotal]" class='form-control mb-4' placeholder="Subtotal")

这是我的app.js文件(使用正文解析器)

const app = Express();
app.use(cookieParser());
app.set("view engine", "pug");
app.use(json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use("/admin", adminRouter);
set("strictQuery", false);
set("autoCreate", false);
app.listen(process.env.PORT || 8000);

这是我的req.body%的原木

 items: [
    {
      service: [Array],
      description: [Array],
      amount: [Array],
      price: [Array],
      subtotal: [Array]
    }
  ],

我甚至try 将数组索引硬编码为items[0].service,但我所有的try 都失败了,将这种数据发送到NodeJS的合适方式是什么?

如有任何帮助,将不胜感激

推荐答案

在迭代中添加index个变量,然后根据您想要的 struct ,使用该索引指定数组中的元素:

each val, index in [1, 2]

然后:

...
input(type="text" name="items["+index+"][description]" 
input(type="text" name="items["+index+"][amount]" class='form-control 
...

注意:如果您也有一个嵌套数组,那么您将以同样的方式在其中添加索引

代码:

each val, index in [1, 2]
                div(class = "row")
                    div(class= "col")
                        select(class="form-select" name = "items["+index+"][service]")
                            each service in services
                                option(value=service._id) #{service.name}                
                    div(class= "col")
                        input(type="text" name="items["+index+"][description]" class='form-control mb-4' placeholder="Description")
                    div(class= "col")
                        input(type="text" name="items["+index+"][amount]" class='form-control mb-4' placeholder="QTY")
                    div(class= "col")
                        input(type="text" name="items["+index+"][price]" class='form-control mb-4' placeholder="Price")
                    div(class= "col")
                        input(type="text" name="items["+index+"][subtotal]" class='form-control mb-4' placeholder="Subtotal")

Html相关问答推荐

简化指标与Delta保持一致

如何将值从Google Sheets侧边栏中的表单中的输入传递到Google Sheets单元格中使用Textile()

我需要主页按钮出现在中间

在CSS中不保持圆形图像形状的边框半径属性

Tailwincss:自动设置网格高度

在 bootstrap 中的弹性项之间添加连接行

Div内容防止同级大小增加

如何使用HTML和css代码在vb.net上打印POS

尽管div高度为100%,div中的内容仍会溢出

更改Angular 为17的material Select 字段的高度?

旧文本淡出,但新文本不会淡入,而是突然出现

HTML中的ARIA标签:在元素内部还是外部?(&Q;

浮动Div在CSS中未按预期工作

30000ms后超时重试:期望找到元素:someElement,但从未找到它

如何在悬停时使用 CSS 更改许多同级元素

当浏览器宽度减小时字体大小变得太大

带标签 css 的 div 内的中心图标

如何将 2 种不同的 colored颜色 应用于 css 中的复选框?

使用 TailwindCSS 将徽标放在左上角,将菜单放在右上角

在中心而不是边界处填充 svg 的背景