使用forEach和/或toArray跨越不同表的迭代命令

时间:2016-06-21 19:09:03

标签: rethinkdb rethinkdb-javascript

我需要遍历主表并将新文档添加到不同的表中,每个表都包含与主表中的文档匹配的id:name:条目。

我已经阅读了relevant documentation,这是非常稀疏的,我发现this SO post关于迭代同一个表内的对象属性,但这不适用,因为我想迭代对象上的对象table,而不是对象中的属性,并将结果应用于NEW表(而不是同一个表)。

我可以遍历表的长度并创建与新表中某些字段匹配的文档吗?

更具体地说:我的数据库primary_table中的文档包含字段id:name.如何将这些ID和相应的名称迁移到使用一个或更详细payment_history的表格中forEachtoArraynext

的组合

我的尝试:

r.db('client').table('basic_info').forEach(
  function(id){
    return r.db('client')table('payment_history').insert(
      {
       id: r.db('client').table('basic_info').get(id).getField('id'),  
       name: r.db('client').table('basic_info').get(id).getField('name')
       }  
      );
  }
);

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以像这样写forEach

r.db('client').table('basic_info').forEach(function(row) {
  return r.db('client').table('payment_history').insert(
    {id: row('id'), name: row('name')});})

但是这样写它可能会更好:

r.db('client').table('payment_history').insert(
  r.db('client').table('basic_info').pluck('id', 'name'))