LEFT OUTER JOIN не возвращает результатов - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть запрос, который я подготовил и над которым работаю.Этот запрос работает в Psequel и PgAdmin, но не будет работать на моем бэкэнде (узел js). Библиотека, которую я использую с узлом js для postgresql, - это узел postgres или 'pg' https://node -postgres.com / https://www.npmjs.com/package/pg Мне кажется очень странным, что он отлично работает с другими приложениями, но не работает в моем бэкэнде.Пожалуйста, ознакомьтесь с информацией, предоставленной ниже Высокий уровень, что здесь происходит;Я проверяю, являются ли пользователи друзьями или нет, проверяя значение «1», затем возвращая значение «истина» или «ложь» на основе этого (открыто для предложений), после чего я продолжаю находить процедуру тренировки пользователей, выполняя второй запрос (не работает) Я ожидаю получить строки, которые, как я знаю, связаны с моим пользователем, как и другие приложения, которые я использовал.Фактический результат этого запроса: '[]'

getRoutine(username, user_id) {
    return new Promise(function (resolve, reject) {
        const client = new pg.Client(connectionString);
        client.connect()
            .then(() => console.log('connected'))
            .catch(err => console.error('connection error', err.stack))
        const text = "SELECT EXISTS(SELECT relationship_status FROM relationships FULL OUTER JOIN users ON users.user_id = relationships.user_one_id OR users.user_id = relationships.user_two_id WHERE users.username = $1 OR users.user_id = $2 AND relationships.relationship_status = 1)"
        const values = [username, user_id]
        const query = client.query(text, values)
            .then(res => {
                if (res.rows[0].exists === true) {
                    // find way to do this in single query
                    const text = "SELECT routine.workout, routine.personal_record, routine.workout_id, routine.upload_date FROM routine LEFT JOIN users ON users.user_id = routine.owner_id  WHERE users.username = $1"
                    const values = [username]
                    const query = client.query(text, values)
                        .then(data => {
                            console.log(data.fields)
                            resolve(data.rows)
                        })
                        .catch(error => {
                            console.log(error)
                            reject();
                        })
                } else {
                    reject();
                }
            })
            .catch(error => {
                console.log(error)
                reject();
            })
    });
}
...