如何使用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"
}
]
},
]
但答案是空数组