所以我想制作一个电话簿应用,其中一个联系人有多个具有特定类别的号码。 我似乎无法从表单中获取这些值并将其输入到我的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},
]
答案 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("/");
}
});
});