Как получить вставленную строку сразу после выполнения запроса в Кассандре? - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь получить последнюю вставленную строку в Кассандре, но получаю 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 голосов
/ 06 мая 2018

Помните, что вы имеете дело с NoSQL ("нереляционный")

Если бы я запустил SELECT * FROM users LIMIT 1 на этой таблице, мой Набор результатов будет содержать одну строку. Этот ряд будет одним содержащий самое низкое хешированное значение имени пользователя (мой ключ раздела), потому что именно так Кассандра хранит данные в кластере. я бы нет никакого способа узнать, был ли это последний добавленный или нет, так что это не было бы очень полезно для вас.

Работа очень отличается от тех, к которым вы могли привыкнуть в MySQL.

Если для вашей системы требуется получение информации о последней вставленной строке, вам необходимо знать ее, прежде чем вставить.

Генерация 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...