如何使用Loopback获取“conversation_members”数组中ID完全匹配的对话?
我在Loopback中有一个集合,其结构如下:
"conversation" : [ { "id": "e03e8b6b-725a-44aa-8181-56cdcebe9a45", "created_at": "2023-02-02T21:38:22.633Z", "conversation_name": "My Conversation", "is_group": true, "created_by": { "id": "123", "name": "John Doe" }, "conversation_members": [ { "id": "123", "name": "John Doe" }, { "id": "456", "name": "Jane Doe" }, { "id": "789", "name": "Jane Doe" } ] }, { "id": "e03e8b6b-725a-44aa-8181-56cdcebe9a45", "created_at": "2023-02-02T21:38:22.633Z", "conversation_name": "My Conversation", "is_group": true, "created_by": { "id": "123", "name": "John Doe" }, "conversation_members": [ { "id": "123", "name": "John Doe" }, { "id": "456", "name": "Jane Doe" }, { "id": "7891", "name": "Jane Doe" } ] }, { "id": "e03e8b6b-725a-44aa-8181-56cdcebe9a45", "created_at": "2023-02-02T21:38:22.633Z", "conversation_name": "My Conversation", "is_group": true, "created_by": { "id": "123", "name": "John Doe" }, "conversation_members": [ { "id": "123", "name": "John Doe" }, { "id": "456", "name": "Jane Doe" }, { "id": "789", "name": "Jane Doe1" } ] }, ]
以及以下LoopBackremoteMethod
:
Conversation.remoteMethod('getConversationsByMembers', { accepts: { arg: 'membersId', type: 'array', required: true }, returns: { arg: 'conversations', type: 'array' }, http: { path: '/getConversationsByMembers', verb: 'post' }, });
具有功能:
Conversation.getConversationsByMembers = function (membersId, cb) { Conversation.find( { where: { conversation_members: { [...] }, }, }, function (err, conversations) { if (err) { cb(err); } else { cb(null, conversations); } }, ); };
我想写where子句,这样我就可以得到“conversation_members”数组包含确切id的对话,例如[123456789]。我该怎么做?
我都试过了
Conversation.getConversationsByMembers = function (membersId, cb) { Conversation.find( { where: { conversation_members: { all: [ { id: { inq: membersId.map((id) => id.toString()), }, }, ], }, }, }, function (err, conversations) { if (err) { cb(err); } else { cb(null, conversations); } }, ); };
和
Conversation.getConversationsByMembers = function (membersId, cb) { Conversation.find( { where: { conversation_members: { elemMatch: { id: { inq: membersId.map((id) => id.toString()), }, }, }, }, }, function (err, conversations) { if (err) { cb(err); } else { cb(null, conversations); } }, ); };
请求主体{"membersId": [123,456, 789]}
。
我在期待
"conversation" : [ { "id": "e03e8b6b-725a-44aa-8181-56cdcebe9a45", "created_at": "2023-02-02T21:38:22.633Z", "conversation_name": "My Conversation", "is_group": true, "created_by": { "id": "123", "name": "John Doe" }, "conversation_members": [ { "id": "123", "name": "John Doe" }, { "id": "456", "name": "Jane Doe" }, { "id": "789", "name": "Jane Doe" } ] }, { "id": "e03e8b6b-725a-44aa-8181-56cdcebe9a45", "created_at": "2023-02-02T21:38:22.633Z", "conversation_name": "My Conversation", "is_group": true, "created_by": { "id": "123", "name": "John Doe" }, "conversation_members": [ { "id": "123", "name": "John Doe" }, { "id": "456", "name": "Jane Doe" }, { "id": "789", "name": "Jane Doe1" } ] }, ]
但答案是空数组