2016-10-11 7 views
0

PUT(既存のユーザーの名前を更新)しようとしているExpress JSアプリケーションがあります。私のスキーマは、ネストされた配列であり、次のようになります。このようになりますPUTを使用して、このユーザーを更新するExpress JS PUTは保存されていませんが更新中です

enter image description here

私のコード:私はユーザーの名前をはっきりと見ることができるよ

router.route('/sensors_update/:_id/') 
    .put(function (req, res) { 
     console.log("inside update put") 
     User.findById(req.params._id, function(err, user) { 
      if (err) 
       res.send(err); 
      console.log(user); 
      user.name = req.body.name; 
      console.log("User val is" + user); 
      user.save(); 
     }); 
    }); 

JSコンソールを使用して更新しています。しかし、私はこのユーザーオブジェクトを保存する際に問題があります。私は入れ子になったスキーマを持っているので、これがすべきだと思います。私の前提は正しい?ネストされた配列を持つユーザーオブジェクトを保存する方法に関する提案。ネストされた配列がアクセスされた理由を私は、ユーザーの名前保存&を更新しようとしているときに私は思っていた

inside update put 
 
{ _id: 'Manasa', 
 
    name: 'Manasa Sub', 
 
    __v: 0, 
 
    sensors: 
 
    [ { sensor_name: 'ras', 
 
     _id: 57da0a4bf3884d1fb2234c74, 
 
     measurements: [Object] } ] } 
 
User val is{ _id: 'Manasa', 
 
    name: 'Manas Sub', 
 
    __v: 0, 
 
    sensors: 
 
    [ { sensor_name: 'ras', 
 
     _id: 57da0a4bf3884d1fb2234c74, 
 
     measurements: [Object] } ] }

:ここ

は、コンソールメッセージです。

おかげ

UPDATE

_http_outgoing.js:335 スロー新しいError(。それらが送られた後、tはヘッダーを設定\ 'できます' '); ^ エラー:送信後にヘッダーを設定できません。

どうすればこの問題を解決できますか?

応答:

{ 
    "message": "Cast to date failed for value \"7:00\" at path \"time\"", 
    "name": "CastError", 
     "type": "date", 
     "value": "7:00", 
     "path": "time" 
     } 

答えて

0

解決方法:配列を入れ子にしたら、mongodbをプッシュして設定します。 これは、1つのフィールドを更新する方法です。

0

ネストされたスキーマは問題ではありません。コンソールにエラーが明確に記録されています。日付型スキーマの文字列型の値を渡しています。時間の値を文字列型からdateに変更します。

文字列を保存する場合は、shcmeaタイプの日付を文字列に変更します。 time:{type:String}

+0

あなたは私の更新をご覧ください。ありがとう – HitRefresh

+0

このエラーは、クライアントに複数回応答を送信しようとしているときに発生します。あなたのルートで正しいことを確認してください。 – Sachin

+0

findByIdのerrブロックをコンソール化します。それはエラーを投げるべきではありません。 – Sachin

関連する問題