我使用NodeJS
+ ExpressJS
+ RethinkDB
编写了一个API。但在执行update
或insert
时,我遇到了返回数据结果的问题
在以下示例中,函数执行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
}
我无法理解我做错了什么......
答案 0 :(得分:1)
您将响应视为游标:
.then(cursor => cursor.toArray())
但实际上,回应应该是一个普通的对象。