2017-05-22 6 views
0

私はNodeJS + ExpressJS + RethinkDBというAPIを書いています。しかし、updateまたはinsertを実行している間にデータ結果を返すことに問題があります。
次の例では、関数はupdateになります。クエリーは必要に応じて機能しますが、resultは空のオブジェクト{}ですが、古いデータや新しいデータなどの状態データを含むオブジェクトを返す必要があります。
成功のRethinkDBは空のオブジェクトを返します

クエリ

router.put('/users/contact_data/:user_id', (request, response) => { 
    let user_id = request.params.user_id; 
    let updateFields = clean_obj.getCleanObject(request.body); 

    r.db(db_name).table('User') 
     .get(user_id) 
     .do((client)=>{ 
       return r.db("Planner").table('ContactData') 
        .get(client("contact_data_id")) 
        .update(
         updateFields, 
         { 
          returnChanges: true 
         } 
        ) 
      } 
     ) 
     .run(request._rdb) 
     .then(cursor => cursor.toArray()) 
     .then(result => { 
      response.send(result); 
     }) 
     .catch(error => response.send(error)); 
}); 

予想される結果は、(rethinkdbドキュメントからコピーされた)のようになります。

{ 
    deleted: 0, 
    errors: 0, 
    inserted: 0, 
    changes: [ 
     { 
      new_val: { 
       id: 1, 
       author: "Julius_Caesar", 
       title: "Commentarii de Bello Gallico", 
       content: "Aleas jacta est", 
       views: 207 
      }, 
      old_val: { 
       id: 1, 
       author: "Julius_Caesar", 
       title: "Commentarii de Bello Gallico", 
       content: "Aleas jacta est", 
       views: 206 
      } 
     } 
    ], 
    replaced: 1, 
    skipped: 0, 
    unchanged: 0 
} 
私は私が間違っているのかを理解することはできません

...

答えて

1

レスポンスをカーソルとして扱います:

.then(cursor => cursor.toArray()) 

実際には、応答は単純なオブジェクトでなければなりません。

関連する問題