Анализ базы данных Javascript Как получить данные из нескольких таблиц, когда столбец имеет одинаковое значение
Я новичок в разборе DB. В последнее время я пытаюсь получить данные из нескольких таблиц, как у меня есть таблица Users и таблица Employee, где User.objectId равен Employee.userid. Я пробовал много способов, но не получил никаких результатов.
let query = new Parse.Query(Employee);
query.descending("updatedAt");
let userQuery = new Parse.Query(User);
userQuery.select("username", "firstName", "lastName", "profile1", "reporter");
query.matchesKeyInQuery("reporter", "reporter", userQuery);
return userQuery.find({
success: function (results) {
return results;
},
error: function (error) {
console.log(error);
}
});
Есть ли способ получить данные из нескольких таблиц на Parse DB Javascript. Я также попытался включить пользователя, но запрос пуст.
1 ответ
Если я правильно понимаю ваш вопрос, вы хотите получить оба User
данные и Employee
данные с одного запроса. По определению вы не можете получить "данные из нескольких таблиц", потому что каждый запрос Parse работает только с одной таблицей. Тем не менее, вы можете include
объекты из других таблиц, когда они хранятся в виде указателей на запрашиваемую таблицу. Или вы можете выполнять несколько запросов параллельно и, таким образом, получать данные из нескольких таблиц.
В вашем случае я предлагаю первое упомянутое решение, которое требует изменения схемы данных: вместо простого сохранения userId
в Employee
вам лучше хранить указатель на User
(вероятно, названный user
). Таким образом, вы можете выполнить запрос следующим образом:
const query = new Parse.Query(Employee)
query.descending('updatedAt')
query.include('user')
const employee = await userQuery.first() // assuming that we have at least one Employee
const user = employee.get('user')
Обратите внимание, что вы не можете использовать полный набор помощников запросов с вложенными указателями, например, я думаю, select
не будет работать на employee.user
,