2017-01-11 2 views
1

Как найти какой-либо элемент массива в составе другого массива в запросе?Сравнение двух массивов в синтаксическом анализе

var followers = []; // Array of Parse User pointers query.howTo("attending", followers); // attending is an array of User Pointers.

То есть, запрос должен соответствовать, если какой-либо один или несколько элементов в followers существует в attending.

query.containsAll соответствует всем элементам. Есть что-то вроде query.containsSome?

+0

Вы пытались использовать 'containsIn'? –

+0

@NatanR. https://parseplatform.github.io/Parse-SDK-JS/api/classes/Parse.Query.html#methods_containedIn Используется для сравнения ключей со значениями. Мне нужно сравнить массив с массивом. – InfinitePrime

+0

Не лучше ли в этом случае использовать отношение вместо массива указателей? Я думаю, что у вас будет больше гибкости, кроме того, что вы можете добавить отношения в обеих сторонах. Пример: https://www.parse.com/questions/inverse-relationship-support –

ответ

1

Я был уверен, что вы можете запросить два массива. Взгляните на документы, чтобы лучше проверить их.

В случае, если это не так, вы можете использовать сложные запросы.

Например, сгенерируйте массив запросов, основанный на массиве последователей. [ForEach] - лучшая идея в этом случае, но я предполагаю здесь цикл for.

var followers = []; //array of users var mainQuery = new Parse.Query(YourOtherObject); //for each one of followers var orQuery = new Parse.Query(YourOtherObject); orQuery.equalTo("attending", follower); mainQuery = Parse.Query.or(mainQuery, orQuery);

Это решение не может быть производительным, если ваши последователи areay слишком большой. Но в любом случае, я по-прежнему рекомендую использовать отношения в этом случае, так как вы извлекаете выгоду из инверсии и можете получить от запроса пользователя, где он присутствует как присутствующий в другом объекте.

+0

массив последователей огромный. В среднем 250 предметов. Как вы думаете? – InfinitePrime

+0

Я думаю, вы должны использовать отношения :) Они предназначены именно для этих случаев. Запуск сценария JS можно легко преобразовать. В противном случае вы можете проверить производительность и посмотреть результаты самостоятельно. Это может быть хорошо или плохо. –

+0

Я изучаю отношения. Будет обновляться. Благодарю. – InfinitePrime