When I add the line "{upsert: true}", I got this error:
TypeError: callback.apply is not a function
router.route('/users/competitorAnalysisTextData/:userName')
.post(function(req, res) {
User.findOne({ userName: req.params.userName}, function(err, user) {
if (err)
res.send(err);
console.log('user.competitorAnalysis.firstObservation: %@', user.competitorAnalysis.firstObservation);
var userName = user.userName;
console.log('Baobao is here!');
user.update(
{
userName: userName
},
{ $set: { "competitorAnalysis.firstObservation" : req.body.firstObservation,
"competitorAnalysis.secondObservation" : req.body.secondObservation,
"competitorAnalysis.thirdObservation" : req.body.thirdObservation,
"competitorAnalysis.brandName" : req.body.brandName,
"competitorAnalysis.productCategory" : req.body.productCategory
} },
{ upsert: true }
);
user.save(function(err) {
if (err)
return res.send(err);
return res.json({ message: 'User updated!' });
});
});
})
There are no errors without this line. I am new to nodejs, not very sure where the problem is.
Update
There is no error message, but this part of the database is not updated with new data. The attached document is still empty.
router.route('/users/competitorAnalysisTextData/:userName')
.post(function(req, res) {
console.log('1');
User.findOneAndUpdate(
{ userName : req.params.userName},
{
$set:
{ "competitorAnalysis.firstObservation" : req.body.firstObservation,
"competitorAnalysis.secondObservation" : req.body.secondObservation,
"competitorAnalysis.thirdObservation" : req.body.thirdObservation,
"competitorAnalysis.brandName" : req.body.brandName,
"competitorAnalysis.productCategory" : req.body.productCategory
}
},
{ upsert: true },
function(err, user) {
console.log('2');
if (err)
return res.send(err);
return res.json({ message: 'User updated!' });
});
})
source
share