. Net Пример Couchbase XATTR из документов, не компилируемых - PullRequest
1 голос
/ 24 февраля 2020

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

Пример был скопирован / вставлено в консольное приложение. net.

Несколько примеров:

bucket.MutateIn<dynamic>("hotel_10138")
                    .Upsert("discounts.jsmith123", "20", SubdocMutateFlags.CreatePath | SubdocMutateFlags.XattrPath)

и

cluster.CreateManager().UpsertUser("jsmith123", "jsmith123pwd", "John Smith",
                    new Role[]
                    { ... });

Однако код выдает несколько ошибок компиляции :

1 - Любая из дюжины или около того ссылок на 'SubdocMutateFlags' дает следующее: Имя 'SubdocMutateFlags' не существует в текущем контексте

2 - В строке cluster.CreateManager (). UpsertUser ("jsmith123", ... мы получаем следующую ошибку: не удалось преобразовать из 'string' в 'Couchbase.Management.AuthenticationDomain'

Установлен пакет Nuget: CouchbaseNetClient.

Все на месте, есть идеи, почему это не работает?

1 Ответ

1 голос
/ 25 февраля 2020

Этот образец определенно нуждается в обновлении.

Сначала вместо SubdocMutateFlags используйте SubdocPathFlags. Вместо SubdocPathFlags.XattrPath используйте SubdocPathFlags.Xattr.

Далее, для UpsertUser вам нужно будет указать Домен аутентификации в качестве параметра. Итак, что-то вроде этого:

cluster.CreateManager().UpsertUser(AuthenticationDomain.Local, "jsmith123", "jsmith123pwd", "John Smith",
                    new Role[]
                    { ... } );

С этими изменениями он должен хотя бы скомпилироваться. Тем не менее, даже с учетом этих изменений, я все еще получаю исключение времени выполнения ObjectDisposedException (поэтому я создал запрос DO C -6347 для этого примера кода, который необходимо просмотреть, и обновлено). Кроме того, этот пример запросит и l oop через весь сегмент, используя первичный ключ. Так что обязательно имейте в виду, что это определенно не то, что вы должны делать в рабочем коде.

Наконец, я бы посоветовал вам обратиться к Couchbase Forums (или к Couchbase Support, если вы корпоративный клиент), чтобы проверить и проверить, является ли использование XATTR правильным инструментом для работы. Вообще говоря, использование XATTR не рекомендуется, за исключением узких, подобных инфраструктуре ситуаций.

...