3

我正在尝试使用 apollo 节点客户端在 ravendb 中创建一个新集合。尽管文档是在 ravendb 中创建和存储的,但元数据中的“集合”值丢失了。因此,文档存储在 @empty 集合下。想知道我错过了什么。

4

2 回答 2

3

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

于 2019-04-14T09:56:51.267 回答
2
  1. 如果您使用Object Literals来存储实体,那么您需要findCollectionNameForObjectLiteral()DocumentStore调用之前设置initialize()
const store = new DocumentStore(urls, database);
store.conventions.findCollectionNameForObjectLiteral = entity => entity["collection"];
// ...
store.initialize();

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

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

  1. 如果您使用来存储实体,则必须将类的实例传递给store()
    查看:https ://github.com/ravendb/ravendb-nodejs-client#using-classes-for-entities
于 2019-05-02T07:52:33.730 回答