成功时RethinkDB Update返回空对象

时间:2017-05-22 11:05:50

标签: node.js api rethinkdb

我使用NodeJS + ExpressJS + RethinkDB编写了一个API。但在执行updateinsert时,我遇到了返回数据结果的问题 在以下示例中,函数执行update。查询按原样运行,但result内部为空对象{},但应返回带有旧/新数据和其他状态数据的对象。

查询

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 docs复制):

{
    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 个答案:

答案 0 :(得分:1)

您将响应视为游标:

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

但实际上,回应应该是一个普通的对象。