我的实际问题是我需要为每个用户生成唯一的ID。我在下面详述了我是如何尝试的以及我的解决方案给我的问题。
我正在使用cassandra-driver插入我的数据库表:
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);
});
答案 0 :(得分:0)
插入操作不提供插入的数据,因此无法在同一操作中从服务器获取它。
您需要生成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