您好,我正在使用Angular 6将“ PUT”请求发送到服务器端(node.js),我有多个PUT请求,问题是
如果我从电子邮件中收到了放置请求,则电话号码将更新为null;如果我从电话中得到了放置请求,则更新后的电子邮件将更改为null。
我想尝试如果该值为null,则不应在MongoDB中对其进行更新。怎么做,请有人帮我。这是我的代码。
用于更新电子邮件的角度PUT请求。
public updatedEmail() {
let userData = {
'providerID': '44',
'firstName': this.info.firstName,
'alternate_email': this.email,
};
let xhr = new XMLHttpRequest();
xhr.open('PUT', 'http://localhost:3000/updateprofile');
xhr.setRequestHeader('content-Type', 'application/json');
xhr.send(JSON.stringify(userData));
console.log('data sent');
}
PUT请求更新电话号码
public updatedPhone() {
let userData = {
'providerID': '44',
'firstName': this.info.firstName,
'workPhone': this.workNumber,
'homePhone': this.homeNumber,
'mobilePhone': this.mobileNumber
};
let xhr = new XMLHttpRequest();
xhr.open('PUT', 'http://localhost:3000/updateprofile');
xhr.setRequestHeader('content-Type', 'application/json');
xhr.send(JSON.stringify(userData));
console.log('data sent');
}
我将Node.js用作服务器端,这是我的用户详细信息架构:
var UserDetailSchema = mongoose.Schema({
providerID: {
type: String
},
firstName: {
type: String
},
alternate_email: {
type: String,
set: deleteEmpty
},
workNumber: {
type: String
},
homeNumber: {
type: String
},
mobileNumber: {
type: String
},
}, {timestamps: true});
var UserDetail = module.exports = mongoose.model('UserDetail',
UserDetailSchema);
module.exports = UserDetail;
我正在制作router.put的路由,因此它根据提供者ID来检查数据库并更新数据库(如果存在)或创建数据库(如果不存在)。
router.put('/updateprofile', function (req, res, next) {
console.log(req.body)
var query = { providerID: req.body.providerID},
update = { alternate_email: req.body.alternate_email, homeNumber: req.body.homeNumber, workNumber: req.body.workNumber, mobileNumber: req.body.mobileNumber },
options = { upsert: true };
UserDetail.findOneAndUpdate(query, update, options, function (error, result) {
if (error) throw (err);
});
});
预先感谢
答案 0 :(得分:0)
首先根据this的帖子,如果您的端点仅更新了应使用PATCH
的一部分数据
要解决您的问题,您可以检查该字段是否存在并且不为空,然后将其添加到更新对象中
const update = {};
if(req.body.alternate_email) update.alternate_email = req.body.alternate_email;
if(req.body.req.body.homeNumber) update.homeNumber = req.body.homeNumber;
// And so on