Express Body Parser - 插入显示未定义的嵌套数组对象

问题描述

我有一个 Node.js 应用程序,我正在提交一个包含要插入 NeDB 数据库的数据的表单。除了数组中的一些嵌套对象显示为未定义外,表单提交工作正常。

我的表格:

<form method="post" role="form">

        <div class="form-group">
            <b><label for="date">Week Commencing</label></b>
            <input type="date" class="form-control" id="dateCommencing" name="date" placeholder="dd-mm-yyyy" required>
        </div>

        <div class="form-group">
            <b><label for="activity">Activity</label></b>
            <input type-"text" class="form-control" id="activity" name="activity" placeholder="Activity" required>
        </div>

        <div class="form-group">
            <b><label for="exercise1">Exercise 1</label></b>
            <select class="form-control" name="exercise1" id="exercise1" required>
                <option value="Squat">Squat</option>
                <option value="Deadlift">Deadlift</option>
                <option value="Bench Press">Bench Press</option>
                <option value="Overhead Press">Overhead Press</option>
            </select>
        </div>

        <div class="form-group">
            <b><label for="exercise1sets">Exercise 1 Sets</label></b>
            <input type="number" id="exercise1sets" name="exercise1sets" min=1 max=10 step=1 required>
        </div>

        <div class="form-group">
            <b><label for="exercise1reps">Exercise 1 Reps</label></b>
            <input type="number" id="exercise1reps" name="exercise1reps" min=1 max=20 step=1 required>
        </div>

        <div class="form-group">
            <b><label for="exercise1weight">Weight</label></b>
            <input type="text" id="exercise1weight" name="exercise1weight" required>
        </div>

        <div class="form-group">
            <b><label for="goal1">Goal 1</label></b>
            <input type="text" id="goal1" name="goal1" required>
        </div>

        <div class="form-group">
            <b><label for="goal2">Goal 2</label></b>
            <input type="text" id="goal2" name="goal2" required>
        </div>

        <div class="form-group">
            <b><label for="goal3">Goal 3</label></b>
            <input type="text" id="goal3" name="goal3" required>
        </div>

        <div class="form-group">
            <input type="submit" value="Post entry" class="btn btn-primary">
        </div>
    </form>

这是我在我的模型中插入到数据库方法(省略了额外的表单元素,这会导致多个对象带有“练习”):

createPlan(dateCommencing,activity,exercise1,exercise1sets,exercise1reps,exercise1weight,goal1,goal2,goal3) {
        console.log('createPlan() method called.')

        var entry = {
            dateCommencing: dateCommencing,activity: activity,exercise: [{
                name: exercise1,sets: exercise1sets,reps: exercise1reps,weight: exercise1weight
            }],goals: {
                goal1: goal1,goal2: goal2,goal3: goal3
            }
        }

        console.log('Entry created.');

        this.db.insert(entry,function(err,doc) {
            if (err) {
                console.log('Error inserting document to DB.',err);
            } else {
                console.log('Document added successfully.',doc);
            }
        })
    }

我在控制器中调用方法的位置:

exports.post_new_plan = function(req,res) {
    console.log('post_new_plan called.');

    db.createPlan(req.body.dateCommencing,req.body.activity,req.body.exercise1,req.body.exercise1sets,req.body.exercise1reps,req.body.exercise1weight,req.body.goal1,req.body.goal2,req.body.goal3);
    
    res.redirect('/plans');
}

方法在某种程度上有效,因为这是添加 db 条目时控制台中的输出

Document added successfully. {
  dateCommencing: undefined,activity: 'test activity',exercise: [
    {
      name: 'Squat',sets: undefined,reps: undefined,weight: undefined
    },{
      name: 'Deadlift',{
      name: 'Bench Press',{
      name: 'Overhead Press',weight: undefined
    }
  ],goals: { goal1: 'test goal 1',goal2: 'test goal 2',goal3: 'test goal 3' },_id: '8yJ68YiWjZLY7pRX'
}

我只是不明白为什么它不能解析表单中的“集合”、“代表”和“重量”数据。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)