获取刚刚插入的行的id

Get the id of the just-inserted row

我的实际问题是我需要为每个用户生成唯一的 ID。我在下面详细说明了我是如何尝试这样做的以及我的解决方案给我带来了什么问题。

我正在使用 cassandra-driver 插入到我的数据库的这个 table 中:

CREATE TABLE myspace.unpublished_question (
    user_id uuid PRIMARY KEY,
    account_created timestamp,
    first_name text,
    surname text
)

为了避免冲突,我想我会让 cassandra 自动生成主键列的 uuid,所以我这样插入:

const cassandra = require('cassandra-driver');
const cassandraClient = new cassandra.Client({contactPoints: ['localhost'], keyspace: 'myspace'});

const query = 'insert into user (user_id, account_created, first_name, surname) values (uuid(), ?, ?, ?)';
const params = [new Date(), 'John', 'Smith'];
cassandraClient.execute(query, params, {prepare: true}, (err, results) => {
  console.log('Callback arguments:', err, JSON.stringify(results));
});

但它只记录这个:

Callback: null {"info":{"queriedHost":"127.0.0.1:9042","triedHosts":{},"achievedConsistency":10},"columns":null,"pageState":null}

我无法检索 cassandra 刚刚为此条目生成的 uuid

我怎样才能知道这个 uuid 是什么?

理想情况下,我希望能够执行以下操作:

cassandraClient.execute(query, params, {prepare: true}, (err, results) => {
  const uuid = X;
  console.log('User has been given uuid:', uuid);
});

插入操作没有提供插入的数据,所以无法在同一个操作上从服务器获取。

您将需要生成 TimeUuid 客户端:

const id = TimeUuid.now();
client.execute(query, [ id, 'John', 'Smith' ], { prepare: true }, (err, result) => {
  // do something with the id
});

有关详细信息,请参阅 TimeUuid 上的 Node.js 文档:http://docs.datastax.com/en/developer/nodejs-driver/latest/features/datatypes/uuids/#time-uuid