【发布时间】:2016-09-14 15:55:57
【问题描述】:
找不到解决办法:(
我正在使用 Node、express 和 mongoose 做一个联系人应用程序。
当用户去路由/contact/: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 按钮上都有 ng-click="remove(field)"
$scope.remove = function(field){ //field can be 'homePhone' or any item
delete $scope.record[field];
$scope.record.$update(function(updatedRecord){
$scope.record = updatedRecord;
})
};
问题是,当我点击 X 按钮并调用时
remove('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} 的原因
我必须改变一切吗?
非常感谢
【问题讨论】:
-
您如何在 findOneAndUpdate 中获得“联系人”?
标签: javascript node.js mongodb express mongoose