ng-admin 中引用实体的外键

Foreign key on reference entity in ng-admin

我正在尝试使用 ng-admin 构建管理界面。 我正在使用 reference 字段来 link 一个主要实体(例如 Post)到具有多对一关系(一个 Post 有很多评论)。

在 Post 的 listView() 上,我必须显示每个 Post 的最后一条评论,但正如我从 relationships documentation of ng-admin 中看到的那样,我不能,因为在我的 API 中,外键不在主要实体上,而是在次要实体上。

换句话说,我在评论实体中有 post_id,但我正在做 Post 的 listView(),所以我无法访问任何评论。

这个问题有解决方法吗?我可以从本身不包含引用键的实体引用外部实体吗?

我将添加一个简单的 JSON 以使示例更清楚。

// Post
{ 
  id: 1,
  title: 'post n1',
  body: 'bla bla bla very cool'
}

// Comment
{ 
  id: 1,
  body: 'yo bro'
  post_id: 1
}

谢谢

根据个人经验和查看参考资料,似乎只有使用 referenced_list(请参阅 http://ng-admin-book.marmelab.com/doc/reference/Field.html#-referenced-list-field-type)才能获得与您正在寻找的结果相似的结果。第一句话完全符合你的情况:

"The referenced_list type maps a one-to-many relationship where the foreign key is located in another entity."

使用它会是这样的:

nga.field('comments', 'referenced_list')
    .targetEntity(comments)
    .targetReferenceField('post_id')

这应该会为您提供与该 post 相关的评论列表。但是,由于此 returns 是一个列表,因此您不能将它与 listView 一起使用(您不能将列表嵌套在列表中)。

不幸的是,我认为没有任何方法可以使用 reference 来获得类似的结果,因为引用使用对象的键之一进行搜索。