无法找到解决方案:(
我正在使用Node,express和mongoose进行联系人应用。
当用户前往路线/联系人/:id
时执行此查询:
Contact.findOne(req.dbQuery, function(err, data) {
res.json(data);
});
回应是:
{
_id: 57 d71ceb57658ba24866a1b0,
__v: 0,
firstName: ['Doe', 'text'],
lastName: ['John', 'text'],
id: 4,
homePhone: ['', 'tel'],
cellPhone: ['', 'tel'],
birthday: ['', 'date'],
website: ['', 'url'],
address: ['test Adress', 'text'],
}
数组中的每个项目都会在页面上显示为标签和文本框
使用ng-repeat。
在每个文本框旁边,我有一个X按钮来删除文本框。
在每个X按钮上点击="删除(字段)"
$scope.remove = function(field){ //field can be 'homePhone' or any item
delete $scope.record[field];
$scope.record.$update(function(updatedRecord){
$scope.record = updatedRecord;
})
};
问题是,当我点击X按钮并致电
时删除(' homePhone')(或任何字段 - ' cellPhone'或任何其他字段)
我通过req.body将正确的数据发送到服务器(我可以看到数据
没有删除的字段)但是得到的回复包括我只是
的字段移除。
在服务器上我执行:
Contact.findOneAndUpdate({
_id: contact._id
}, req.body, {
upsert: true,
new: true
}, function(err, data) {
res.json(data);
});
我还有一个"添加新字段"通过添加项目添加文本框的按钮
到数组。我在添加新字段
时执行相同的查询这就是我使用{upsert:true,new:true}
的原因我必须改变一切吗?
非常感谢
答案 0 :(得分:0)
请使用$unset
运算符从文档中删除任何字段。这是首选方法,或在执行更新时从文档中删除字段。