私は行を追加し、 "{アップサート:真}" はない:TypeError例外:callback.apply関数(Node.jsの&MongoDBの)
例外TypeError:callback.apply関数ではない、私はこのエラーを得ました
// on routes that end in /users/competitorAnalysisTextData
// ----------------------------------------------------
router.route('/users/competitorAnalysisTextData/:userName')
// update the user info (accessed at PUT http://localhost:8080/api/users/competitorAnalysisTextData)
.post(function(req, res) {
// use our user model to find the user we want
User.findOne({ userName: req.params.userName}, function(err, user) {
if (err)
res.send(err);
console.log('user.competitorAnalysis.firstObservation: %@', user.competitorAnalysis.firstObservation);
// Got the user name
var userName = user.userName;
// update the text data
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 }
);
// save the user
user.save(function(err) {
if (err)
return res.send(err);
return res.json({ message: 'User updated!' });
});
});
})
この行がない場合、エラーはありません。私はnodejsを初めて使っていますが、どこに問題があるのかはあまりよく分かりません。
更新
今は、エラー・メッセージが、データベースのこの部分は、新しいデータで更新されません。埋め込みドキュメントはまだ空です。
// on routes that end in /users/competitorAnalysisTextData
// ----------------------------------------------------
router.route('/users/competitorAnalysisTextData/:userName')
// update the user info (accessed at PUT http://localhost:8080/api/users/competitorAnalysisTextData)
.post(function(req, res) {
console.log('1');
// Just give instruction to mongodb to find document, change it;
// then finally after mongodb is done, return the result/error as callback.
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) {
// after mongodb is done updating, you are receiving the updated file as callback
console.log('2');
// now you can send the error or updated file to client
if (err)
return res.send(err);
return res.json({ message: 'User updated!' });
});
})
私はあなたが非常にうまく説明し、2番目に示唆された方法に従うことを試みると思う。しかし、私はまだ同じエラーメッセージが表示されます。あなたはもう少し私を助けて、ポストの私の**アップデート**セクションを見てみてください。 –
私はこれがうまくいくことを願っています。実際には5つの引数を渡しました。findOneAndUpdate()は4つの引数を受け入れます。 4番目はコールバックです。http://mongoosejs.com/docs/api.html#query_Query-findOneAndUpdate – vdj4y
はい、非常に役に立ちます。 –