GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Pegar id de duas tabelas e inserir em uma terceira tabela

Tags: #<Tag:0x00007f22e34231e8> #<Tag:0x00007f22e34230a8>

Olá estou criando um botão que adiciona uma receita na pagina de favoritos e eu quero que quando o usuário clique no botão seja inserido na tabela likes o id do usuário e id da receita que ele favoritou. está tudo funcionando menos a parte para pegar os ids eu estou usando o knex.js e postgresql e sou novo no knex e já tentei tudo o que tinha na documentação mas não estou sabendo como interceptar os ids e jogar eles na tabela.

Esse é o código para pegar os ids:

`module.exports = app => {

const save = (req, res) => {

const like = {
    id: req.body.id,
    userId: user.id,
    recipeId: recipe.id
}

app.db('likes')
    .insert(like)
    .then(_ => res.status(204).send())
    .catch(err => res.status(500).send(err))
} 

return { save }

}`

caso precise esses são os da tabela de receitas e usuarios:

const save = (req, res) => {
    const recipe = { ...req.body }
    if (req.params.id) recipe.id = req.params.id

    try {
        existsOrError(recipe.name, 'Nome não informado')
        existsOrError(recipe.Ingredients, 'Ingredientes não informados')
        existsOrError(recipe.time, 'Tempo de preparo não informados')
        existsOrError(recipe.portion, 'Porção não informados')
        existsOrError(recipe.preparation, 'Modo de preparo não informado')
        existsOrError(recipe.categoryId, 'Categoria não informada')

    } catch (msg) {
        res.status(400).send(msg)
    }

    if (recipe.id) {
        app.db('recipes')
            .update(recipe)
            .where({ id: recipe.id })
            .then(_ => res.status(204).send())
            .catch(err => res.status(500).send(err))
    } else {
        app.db('recipes')
            .insert(recipe)
            .then(_ => res.status(204).send())
            .catch(err => res.status(500).send(err))
    }
}

const save = async (req, res) => {
    const user = { ...req.body }
    if (req.params.id) user.id = req.params.id

    if (!req.originalUrl.startsWith('/users')) user.admin = false
    if (!req.user || !req.user.admin) user.admin = false

    try {
        existsOrError(user.name, 'Nome não informado')
        existsOrError(user.email, 'E-mail não informado')
        existsOrError(user.birth, 'Data de nascimento não informada')
        existsOrError(user.password, 'Senha não informada')
        existsOrError(user.confirmPassword, 'Confirmação de Senha inválida')
        equalsOrError(user.password, user.confirmPassword,
            'Senhas não conferem')

        const userFromDB = await app.db('users')
            .where({ email: user.email }).first()
        if (!user.id) {
            notExistsOrError(userFromDB, 'Usuário já cadastrado')
        }
    } catch (msg) {
        return res.status(400).send(msg)
    }

    user.password = encryptPassword(user.password)
    delete user.confirmPassword

    if (user.id) {
        app.db('users')
            .update(user)
            .where({ id: user.id })
            .whereNull('deletedAt')
            .then(_ => res.status(204).send())
            .catch(err => res.status(500).send(err))
    } else {
        app.db('users')
            .insert(user)
            .then(_ => res.status(204).send())
            .catch(err => res.status(500).send(err))
    }
}
//