这是node.js,Express和Mongoose项目。
我正在尝试将表单字段(水果价格)的输入推送到数组中。我的DB里有水果的名字。每块水果都可以有很多价格。用户以我的形式输入许多不同的水果价格作为数组。
router.post('/fruit', function(req, res) {
//Some code to match the name of the fruit entered by user to the name of the fruit in the DB
if(!existingFruit) {
//Some code
}
if(existingFruit) {
Fruit.findOneAndUpdate({fruit: req.body.fruit}, {
$push: { price: req.body.price1 }},
//Some code which tells the user whether the price they entered was inserted into the DB or not
});
以下是有问题的输入字段:
<label for="price1">Price</label>
<input type="text" name="price1" id="price1"/>
<label for="price2">Price</label>
<input type="text" name="price2" id="price2"/>
作为我的后端代码和表单字段,只有“price1”中输入的价格才会被插入到数据库中。
所以我想知道......有没有办法让我一遍又一遍地循环我的后端代码,以便检索输入字段'price2','price3'等中输入的值......
答案 0 :(得分:0)
您可以执行以下操作来迭代所有字段:
let i = 0;
let field;
while (field = form['price' + i++]) {
...
}
答案 1 :(得分:0)
Express body-parser使用表单字段名中的数组访问约定。因此,如果您将表单命名为:price [0],那么当正文到达post方法时,它将成为req.body.prices中的第一个元素。
Fwiw你也可以做对象,所以如果你想要一个带有名字和值的水果数组,你可以创建名称为“fruits [0] .name”和“fruits [0] .prices [0]”的表单输入