使用“.create”

时间:2018-02-19 13:54:21

标签: javascript arrays mongodb express mongoose

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

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},
]

1 个答案:

答案 0 :(得分:0)

你可以这样做

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("/");
        }
    });
});