RethinkDB 成功更新 returns 空对象
RethinkDB on success Update returns empty object
我用 NodeJS
+ ExpressJS
+ RethinkDB
写了一个 API。但是我在执行 update
或 insert
时遇到 returning 数据结果的问题。
在下面的示例函数中执行 update
。查询正常工作,但 result
内部是空对象 {}
,但 return 对象应包含 old/new 数据和其他状态数据。
查询
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
}
我不明白我做错了什么...
您正在将响应视为游标:
.then(cursor => cursor.toArray())
但实际上,响应应该是一个普通对象。
我用 NodeJS
+ ExpressJS
+ RethinkDB
写了一个 API。但是我在执行 update
或 insert
时遇到 returning 数据结果的问题。
在下面的示例函数中执行 update
。查询正常工作,但 result
内部是空对象 {}
,但 return 对象应包含 old/new 数据和其他状态数据。
查询
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
}
我不明白我做错了什么...
您正在将响应视为游标:
.then(cursor => cursor.toArray())
但实际上,响应应该是一个普通对象。