Я пытаюсь создать новую коллекцию в ravendb, используя клиент узла apollo. Хотя документ создается и хранится в ravendb, значение «коллекция» из метаданных отсутствует. И в результате документ хранится в коллекции @empty. Интересно, чего мне не хватает.
При создании нового документа в ravendb имя коллекции отсутствует в метаданных, и документ помечен как @пустая коллекция.
Ответы (2)
Я нашел решение. Проблема была вызвана тем, что я пытался передать на лету объект Json типа интерфейса, в то время как требуется передать объект класса, реализующего интерфейс. RavenDB использует имя класса объекта для установки идентификатора и организации документов в коллекциях.
person
prasadv
schedule
14.04.2019
- Если вы используете литералы объектов для сохраняемых сущностей, вам необходимо установить
findCollectionNameForObjectLiteral()
вDocumentStore
перед вызовомinitialize()
const store = new DocumentStore(urls, database);
store.conventions.findCollectionNameForObjectLiteral = entity => entity["collection"];
// ...
store.initialize();
Это необходимо сделать до вызова initialize() для экземпляра DocumentStore.
В противном случае сущности создаются в коллекции @empty.
См. https://github.com/ravendb/ravendb-nodejs-client#using-object-literals-for-entities
- Если вы используете классы для хранения сущностей, экземпляр класса должен быть передан в
store()
См.: https://github.com/ravendb/ravendb-nodejs-client#using-classes-for-entities
person
Danielle
schedule
02.05.2019
const sched: IScheduling = { appointment: { id: 'appointments/1-A', client: { id: 'clients/1-A', name: 'Entity', }, }, status: 'Pending', tier: 1, sendOn: new Date() }; await session.store<Scheduling>(sched); await session.saveChanges();
- person prasadv   schedule 14.04.2019