如何在cassandra中执行查询后立即插入行?

时间:2018-05-03 18:12:29

标签: node.js cassandra

我正在尝试在cassandra中获取最后一行,但我得到了undefined

以下是代码查找insert的方式:

const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['h1', 'h2'], keyspace: 'ks1' });

let query = "INSERT INTO users (id, name, email ) values (uuid(), ?, ?)";

client.execute(query, [ 'badis', 'badis@badis.com' ])
  .then(result => console.log('User with id %s', result.rows[0].id));

1 个答案:

答案 0 :(得分:5)

请记住,您正在处理NoSQL(“非关系”)

  

如果我在这张桌子上跑SELECT * FROM users LIMIT 1,我的   结果集将包含单行。那一行就是那一行   包含用户名的最低哈希值(我的分区键),   因为这就是Cassandra如何在集群中存储数据。我会   无法知道它是否是最后添加的,所以这个   对你来说不会非常有用。

The workings are very different from those that you might be used to in MySQL.

如果您的系统需要获取最后插入的行的信息,那么在插入之前您必须知道它。

Generating UUID

const Uuid = require('cassandra-driver').types.Uuid;
const id = Uuid.random();

然后,您可以使用id作为准备好的插入查询的另一个值

const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['h1', 'h2'], keyspace: 'ks1' });

let query = "INSERT INTO users (id, name, email ) values (?, ?, ?)";

client.execute(query, [id, 'badis', 'badis@badis.com' ])
  .then(result => console.log('User with id %s', id));