在Loopack

时间:2017-09-18 04:11:21

标签: loopback

首先,我很抱歉,如果有人问过第一次,我搜索了这个并获得了一些链接,但没有帮助。

我正在研究在Angular 4中创建的简单聊天应用程序,它具有Customer实体和Conversation实体以及Message。在客户=> hasAndBelongsToMany =>与MongoDb Connector的对话。

在customer.json

"relations": {
  "conversations": {
    "type": "hasAndBelongsToMany",
    "model": "Conversation"
  }
}

在conversation.json

"relations": {
  "customers": {
    "type": "hasAndBelongsToMany",
    "model": "Customer"
  }
}

这会创建包含conversationId和customerId

的表customerConversation

现在基本上我想找到两个客户ID的对话,所以我尝试使用过滤器,但它似乎不起作用并且总是返回空数组,即使有会话有这两个客户ID。

let filter = {
  where: {
    and: [
      {
        customers: {
          inq: [
            this.customerId // = 59bb981f35fcc941e8ba64e4
          ]
        }
      },
      {
        customers: {
          inq: [
            this.authService.getCurrentId() // = 59bb98c735fcc941e8ba68ff
          ]
        }
      }
    ]
  }
};

和另一个没有和运算符

let filter = {
  where: {
    customers: {
      inq: [
        this.customerId,  // 59bb981f35fcc941e8ba64e4
        this.authService.getCurrentId() //  59bb98c735fcc941e8ba68ff
      ]
    }
  }
};

这两个都返回带有提到的Id但是有0个会话的客户。我知道我可以通过使用包含过滤器进行对话来获得特定客户的所有对话,但仍然需要对这些对话进行过滤,因为我希望此客户与其他特定客户进行单一对话。

1 个答案:

答案 0 :(得分:0)

您可以先获取客户,然后使用关系并包含以获取所需数据,从而获取信息。

示例基于您使用打字稿和文字编写此内容的假设。角度应用程序上的loopback-sdk-builder。

this.customerApi
  .getConversations(this.authService.getCurrentId(), {
      where: {
      customerId: this.customerId
  })
  .subscribe(result => {
    // your logic here

  })