Скрипт NodeJS N1QL-запроса базовой корзины Couchbase не возвращает никакого значения - PullRequest
0 голосов
/ 29 мая 2018

У меня есть базовый скрипт NodeJS Couchbase прямо из их документации.Он просто вставляет документ и сразу же N1QL запрашивает вставленный документ.

var couchbase = require('couchbase')
var cluster = new couchbase.Cluster('couchbase://localhost/');
cluster.authenticate('admin', 'admini');
var bucket = cluster.openBucket('application');
var N1qlQuery = couchbase.N1qlQuery;

bucket.manager().createPrimaryIndex(function() {
  bucket.upsert('user:king_arthur', {
    'email': 'kingarthur@couchbase.com', 'interests': ['Holy Grail', 
   'African Swallows']
  },
  function (err, result) {
    bucket.get('user:king_arthur', function (err, result) {
      console.log('Got result: %j', result.value);
      bucket.query(
        N1qlQuery.fromString('SELECT * FROM application WHERE $1 in 
      interests LIMIT 1'),
      ['African Swallows'],
      function (err, rows) {
       console.log("Got rows: %j", rows);
     });
   });
 });
});

Возвращается обратно

bash-3.2$ node nodejsTest.js  Got result:
      {"email":"kingarthur@couchbase.com","interests":["Holy 
      Grail","African Swallows"]} 
      Got rows: []

Я ожидал, что вставленный документ будет помещен в массив «строк».

Есть идеи, почему не работает этот самый простой стартовый скрипт nodeJS?

1 Ответ

0 голосов
/ 29 мая 2018

Записи чтения ключа / значения всегда согласованы (то есть, если вы пишете документ, а затем извлекаете его по идентификатору, вы всегда получите обратно то, что только что написали).Однако обновление индекса для запросов N1QL занимает много времени и может повлиять на производительность.

Начиная с версии 5.0, вы можете контролировать свои требования согласованности, чтобы сбалансировать компромисс между производительностью и согласованностью.По умолчанию Couchbase использует режим Not_bounded.В этом режиме запросы выполняются немедленно, без ожидания индексации.Это вызывает проблему, которую вы видите.Ваш запрос выполняется до того, как индекс был обновлен с учетом сделанной вами мутации.

Подробнее об этом можно прочитать здесь: https://developer.couchbase.com/documentation/server/current/indexes/performance-consistency.html

...