javascript - 使用 ".create"时如何使用 Mongoose 添加到数组中的对象

标签 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:[]; 没有插入任何内容。 我想要做的是将多个对象添加到数字数组中。 在我的表单中,我可以按加号,然后将显示一个新输入以写入新信息。 数字数组示例:

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

最佳答案

你可以这样做

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

关于javascript - 使用 ".create"时如何使用 Mongoose 添加到数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48867734/

相关文章:

javascript - 从数组中删除值并将它们添加到 POST 方法请求中

c++ Cycle随机切断?

javascript - 从数组 Javascript 中拼接对象

c# - 使用非通用 EQ-Query 从集合中删除文档

javascript - 如何确保 Mongoose 中的函数在 console.log 之前执行?

javascript - 如何在jquery中触发具有特定类的所有按钮的点击事件

javascript - WebStorm 期待 $.insertBefore() 的多个参数?

mongodb - 通过 insertId 获取文档 MongoDB

javascript - Firebase 云函数 - promise : Is there any limitation to the number of 'promises' that can be added to Promise. all()?

javascript - 如何使用 React JS 将数据放入我的 Google 电子表格