【问题标题】:How to add to an Object in an Array using Mongoose when using ".create"使用“.create”时如何使用 Mongoose 添加到数组中的对象
【发布时间】:2018-07-29 18:44:11
【问题描述】:

所以我想制作一个电话簿应用程序,其中一个联系人有多个特定类别的号码。 我似乎无法从表单中获取这些值并将其输入到我的联系人对象中。 这是我的模型:

var contactSchema = new mongoose.Schema ({
    name: String,
    surname: String,
    address: String,
    email: String,
    number: [
        { phone: String,
        number: Number,
        default: Boolean }
    ]
});

这是我的表格:

<p>Add Number <span id="plus"> <i class="fa fa-plus"></i></span></p>
                <div class="row add">
                    <div class="col-3">
                        <select class="form-control mr-sm-2" name="phoneType">
                            <option value="Mobile">Mobile</option>
                            <option value="Telephone">Telephone</option>
                            <option value="Fax">Fax</option>
                        </select>
                    </div>
                    <div class="col-5">
                        <div class="form-group"><input class="form-control" type="number" name="phoneNumber" placeholder="Number..."></div>
                    </div>
                    <div class="col-4">
                        <select class="form-control mr-sm-2" name="phoneDefault">
                            <option selected value="false">Set as default</option>
                            <option value="true">Yes</option>
                        </select>
                    </div>
                </div>

还有我的创建路线:

app.post("/", function(req, res) {
    var phoneType = req.body.phoneType;
    var phoneNumber = req.body.phoneNumber;
    var phoneDefault = req.body.phoneDefault;
    var number = {"phone":phoneType, "number": phoneNumber, "default": phoneDefault};
    Contact.create(req.body.contact, {$push: {"number":[number]}}, function(err, createdContact){
        if(err) {
            console.log(err);
            res.redirect("/new");
        } else {
            console.log(createdContact);
            res.redirect("/");
        }
    });
});

当我使用它创建一个联系人时,我只得到一个空数组作为数字:[]; 什么都没有插入。 我想要做的是将多个对象添加到数字数组中。 在我的表格中,我可以按加号,然后会显示一个新的输入来写入新信息。 数字数组示例:

    number:[
{phone:"fax"
numebr:"1234"
default: true},
{phone:"mobile"
numebr:"133234"
default: true},
{phone:"telephone"
numebr:"123234"
default: true},
]

【问题讨论】:

    标签: javascript arrays mongodb express mongoose


    【解决方案1】:

    你可以这样做

    app.post("/", function(req, res) {
        var phoneType = req.body.phoneType;
        var phoneNumber = req.body.phoneNumber;
        var phoneDefault = req.body.phoneDefault;
        var number = {"phone":phoneType, "number": phoneNumber, "default": phoneDefault};
        var contact = new Contact({
               anyField : req.body.contact,
               number : number
         });
         contact.save(function(err, createdContact){
            if(err) {
                console.log(err);
                res.redirect("/new");
            } else {
                console.log(createdContact);
                res.redirect("/");
            }
        });
    });
    

    【讨论】:

    • 表格比这里显示的要大。它包含名称、姓氏、地址等输入。我将其命名为 name=contact[name] 等。
    • 表示你还想在数据库中插入req.body.contact
    • 它将数字存储在数据库中,但不是作为单独的对象,尽管我认为我必须有不同名称的动态表单?
    猜你喜欢
    • 2019-02-13
    • 2019-04-23
    • 1970-01-01
    • 2020-10-27
    • 2016-10-24
    • 1970-01-01
    • 2021-07-04
    • 2021-06-04
    • 2021-09-01
    相关资源
    最近更新 更多