Не могу использовать "mutateIn" с узлом couchbase sdk
Я пытаюсь реализовать этот кусок кода:
bucket.mutate_in('some_doc',
SD.array_append('some.array', 'Hello', 'World',
create_parents=True))
Что я получаю отсюда: https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html
Я также использую это: https://github.com/couchbase/couchnode
Я не могу импортировать "вложенный документ" из couchbase, потому что я получаю сообщение о том, что его не существует, и когда я пытаюсь использовать метод mutateIn (или метод mutate_in), я также получаю сообщение о том, что mutateIn не является свойством ведра (что и должно быть).
Я хотел бы добавить элемент в массив (или создать массив, если он не существует, а затем добавить элемент к нему) для одного из моих документов в моем контейнере базы данных.
2 ответа
Возможно, у вас не установлена достаточно новая версия. Согласно примечаниям к выпуску поддержка Sub Document была реализована в 2.3.0, в то время как в более ранних выпусках она была добавлена как незафиксированная.
Что делает ваш package.json или npm list
Команда скажете о версии у вас?
Документация не кажется самой легкой для навигации (и примеры на странице поддокумента находятся на Python, к которому вы можете перейти из раздела узла, не осознавая!) - у меня была та же проблема, проверьте: https://developer.couchbase.com/documentation/server/4.6/sdk/nodejs/document-operations.html
Пытаться
import couchbase from 'couchbase';
let cluster = new couchbase.Cluster(config.couchbase.clusterIp);
let couchbaseBucket = cluster.openBucket(config.couchbase.bucket);
couchbaseBucket
.mutateIn(documentId)
.arrayAppend('key', value)
.execute(function(err, fragment){
if (!err || err.code == couchbase.errors.checkResults) {
try {
fragment.contentByIndex(0);
} catch (e) {
console.error('Error for index %d: %s', 0, e.message);
}
} else {
console.error('Top-level document error: %j', err);
}
});