在ravendb中创建新文档时,元数据中缺少集合名称,并且该文档标记在@empty集合下

时间:2019-04-13 06:31:22

标签: graphql ravendb apollo-client document-database ravendb-studio

我正在尝试使用apollo节点客户端在ravendb中创建一个新集合。尽管已创建文档并将其存储在ravendb中,但缺少元数据中的“集合”值。结果,文档存储在@empty集合下。想知道我想念的是什么。

2 个答案:

答案 0 :(得分:3)

我找到了解决方案。引起该问题的原因是,我试图传递接口类型的动态Json对象,而它却需要传递该类的对象来实现接口。 RavenDB使用对象的类名来设置ID并组织集合下的文档。

答案 1 :(得分:2)

  1. 如果您将 Object Literals 用于要存储的实体,则需要在调用 'type': 'gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding', 之前在findCollectionNameForObjectLiteral()上设置DocumentStore
initialize()

必须在对DocumentStore实例进行initialize()调用之前完成。
否则,将在@empty集合中创建实体。

请参见https://github.com/ravendb/ravendb-nodejs-client#using-object-literals-for-entities

  1. 如果您要使用来存储实体,则必须将类的实例传递给const store = new DocumentStore(urls, database); store.conventions.findCollectionNameForObjectLiteral = entity => entity["collection"]; // ... store.initialize();
    参见:https://github.com/ravendb/ravendb-nodejs-client#using-classes-for-entities