【问题标题】:Loopback where filter in child relation with pagination环回过滤子关系与分页
【发布时间】:2017-12-19 14:29:01
【问题描述】:
-------------------
Schema Notification
-------------------
id,
userId,
status,
...


-----------
Schema User
-----------
id
name
email
...

我在环回中有一个名为Notification 的模型,它大致有 id、userId、......和其他一些字段。这里 userId 是与 user 表的关系,其中包含 name 和用户的其他详细信息。

What I have: 在前端,我以分页形式(每页 10 条记录)显示了所有这些通知。 前端视图:

+------------------------------------------+
| UserName  UserEmail   NotificationStatus | 
+------------------------------------------+
| xxxx      xxx@xx.xxx  PENDING            |
| xxxx      xxx@xx.xxx  ACCEPTED           |
| xxxx      xxx@xx.xxx  REJECTED           |
--------------------------------------------

What I want: 能够根据用户关系中的名称搜索通知。

What I already know: 是不是环回已经提供了类似的东西:

include: [{
  relation:"user" ,
  scope:{ 
    where:{
      name: { like: 'name-of-user', options: 'i'} 
    }
  }
}]

What It returns: 是所有通知,但仅包括名称与我传递的字符串匹配的用户。即打印所有通知,但留下与我传递的字符串不匹配的用户名和电子邮件。

What I thought to try: 是删除我的角度前端控制器中的条目,这些条目在将http响应分配给循环通过html中的条目的范围变量之前没有用户对象。但是假设如果 10 个条目中有 5 个没有用户,则 angular 会拼接出这些条目,但实际上每页必须有 10 个条目,除非没有符合条件的记录。

我希望我的问题是有道理的,并就此事寻求一些解决方案。 谢谢

【问题讨论】:

  • 我认为这是因为 ORM 包含了左连接之类的工作。当没有要包含的值时,它返回空值。所以要让它工作,你需要使用用户模型并包含通知

标签: pagination nested where relation loopback


【解决方案1】:

如果您使用的是 rdbms 类型的 schema ,那么到目前为止环回是不可能的。 查看一些未解决的问题。

https://github.com/strongloop/loopback/issues/517https://github.com/strongloop/loopback/issues/683

你可能需要寻找原生 sql 来解决这个问题

【讨论】:

  • 我相信你是对的@rahul。我现在已经修改了代码并构建了自定义 mongodb 聚合以实现相同的效果。
猜你喜欢
  • 2021-07-22
  • 1970-01-01
  • 2019-08-12
  • 2018-05-17
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
相关资源
最近更新 更多