如何在RethinkDB中执行复杂的批量更新

时间:2015-11-21 15:38:23

标签: rethinkdb

我正在尝试定期计算帖子表中所有项目的复杂top分数。

const {log10, max, abs, round} = Math;

const topScore = post => { // from Reddit
  const {score, createdAt} = post;
  const order = log10(max(abs(score), 1));
  const sign = score > 0 ? 1 : (score < 0 ? -1 : 0);
  const seconds = Date.now() - createdAt;
  return sign * order + seconds / 45000;
};

使用上述功能,我想执行以下操作:

// Update topScore every 60 seconds.
setInterval(() =>
  r.table('post').update(post => post.topScore = topScore(post)).run();
, 60000);

如何使用RethinkDB javascript驱动程序执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以编写r.table('post').update(r.js('(function(post) { ... })'), {nonAtomic: true}),其中...是任意JS代码。否则,您必须将该代码转换为ReQL或将文档下载到客户端,更新它们,然后将它们写回服务器。

相关问题