2017-03-19 2 views
0

Mongoの配列に項目を追加する方法nodejs { ID: "david123"、 友人[{ID:joe321、LNAME "ウー"、FNAME "ジョー"}] }マングースは、私は 等コレクション有する

は私が友人

私は現在、これを持って

に新しい要素を追加したいが、それは私がこの

0のように私のスキーマを定義し

app.post('/users/:uid/friends', function(req, res){ 
    var userId = req.params.uid; 
    Friend.update({'_id': userId}, 
    {$push: {Friends: req.body.friend}}, 
    { upsert : true }, 
    function(err, result){ 
     if (err){ 
    console.log(err); 
    } else { 
    res.status(200).json(result); 
    } 
    }) 
}); 

動作していないようです

var FriendSchema = new mongoose.Schema({ 
    _id: String, 
    Friends: [{ 
    _id: String, 
    fname: String, 
    lname: String 
    }] 
}); 

私は{友人: '{はuserId: "john123"、LNAME "smoth"、fnameは "ジョン"}'、 のuserId: 'userId123'} を送信要求行い、イムは [TypeError例外を取得します: 「_id」を検索するためのオペレータの中で 'を使用することはできません{はuserId:fnameは「ジョン」、「john123」、LNAME「smoth」}]

答えて

0

を教えてくれる「それが動作していないようです」何も、本当に。エラーが印刷されていますか?不良データが挿入されていますか?データなし? HTTPリクエストに対する応答は何ですか?これらは、最も重要な質問ですが、該当する情報が提供されていないので、私はあなたにいくつかのヒントを与えることができます。

  1. はモンゴへの接続が
  2. は、あなたがそのデータベースに接続していることを確認します成功したことを確認してくださいあなたが必要な場合は、
  3. エラーで応答を返すようにしてくださいとだけではなく、成功に
  4. 重複を避けるために、$ addToSet代わりに$を押すだけ使用することを確認し、正しいエンコーディングでボディパーサーを使用していることを確認してください
  5. だと思います
  6. あなたが
  7. リクエストでJSONがfriend財産
  8. はあなたのことを確認してください含まれていることを確認してください
  9. は、あなたがリクエストボディにデータを送信することを確認しますJSONコンテンツタイプとPOSTメソッドで要求を送信していることを確認しますhttps://github.com/expressjs/body-parser#bodyparserjsonoptions(4)を参照してください

    https://docs.mongodb.com/manual/reference/operator/update/addToSet/

    (3)を参照してくださいいくつかの要求ロギング

を持っています

あなたは使用しているフレームワークについて何も言っておらず、フレームワークタグで質問していませんでしたが、あなたのコードはあなたがExpressを使用していることを示唆しています。

const bodyParser = require('body-parser'); 

とどこかにあなたが持っている後:初めに -

npm install body-parser --save 

とあなたのコード内:そのような場合、あなたは正しいボディパーサーミドルウェアを使用する必要が要求ハンドラでreq.bodyを使用しますappはなく、app.post(...);前に次のものが必要です。

app.use(bodyParser.json()); 

あなたはを使用することができるようにJSONとしてパースリクエストボディを持つようにしたい場合はあなたのハンドラにはとreq.body.friendがあります。

そして、あなたのリクエストハンドラでは、いくつかの基本的なログを使用します。実際には対応して渡され、それが正しく、適切なボディパーサーによって非直列化されていることをされたかを見るために

app.post('/users/:uid/friends', (req, res) => { 
    // start with: 
    console.log('Request body:' JSON.stringify(req.body)); 
    // the rest of the logic ... 
}); 

を。

関連する問題