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))
}
}