0
I’m creating a like where the action can be done only once per person, I perform the action with the user X the first time and it works and if he tries again he can’t, but when someone else gives the like the user X can even with her name already saved, I am saving the names of people giving like in an array within the receiver.
const mongoose = require('mongoose');
const Grap = mongoose.model('Usuario');
const Grap2 = mongoose.model('Job');
module.exports = {
async store(req, res){
const { user } = req.headers;//pega o usuario logado.
const { devId } = req.params;//pega o usuario selecionado e não logado.
const UsuarioLogado = await Grap.findById(user);//não preciso mexer em nada aqui.
const UsuarioReceptor = await Grap2.findById(devId);//Quem recebe o like
try{
if(UsuarioLogado.nome == UsuarioReceptor.nome)//para que o criador não possa dar like em si mesmo
return res.status(400).json({error: 'Você não pode se avaliar'})
UsuarioReceptor.likes.push(UsuarioLogado.nome);
await UsuarioReceptor.save();//salva dentro do array.
}catch{
return res.status(400).send({error:'fail'});
}
return res.json(UsuarioLogado);//retorna para o usuario logado.
}
};
and this is where the Ikes are saved
const SearchSchema = new Schema({
_id:{
type: String,
required: true,
},
nick:{
type: String,
required: true,
},
nome:{
type: String,
required: true,
},
elo:{
type: String,
required: true,
},
num:{
type: String,
required: false,
},
wpp:{
type: String,
required: true,
},
likes:{
type: [String], <-- os likes são salvos aqui
unique:false
},
}