Ho un codice semplice qui.perché il confronto Javascript non funziona con gli oggetti?
L'intenzione è quella di verificare l'utente con l'utente che ha scritto il post e consentire all'utente verificato di modificare il post.
exports.edit = function(req, res){
Post.findById(req.params.post_id, function(err, post){
if(err){
return res.json({
type:false,
message:"error!"
});
}else if(!post){
return res.json({
type:false,
message:"no post with the id"
})
}else{
console.log(req.user._id, typeof req.user._id);
console.log(post.author.user_id, typeof post.author.user_id);
if(req.user._id === post.author.user_id){ // doesn't work!!
return res.json({
type:false,
message:"notAuthorized"
});
}else{
return res.json({
type:true,
message:"it works",
data:post
});
}
}
});
}
La console dice:
557c6922925a81930d2ce 'object'
557c6922925a81930d2ce 'object'
che significa che sono uguali in valore e anche uguale nei tipi.
Ho provato anche con ==
, ma anche questo non funziona.
Sospetto che sia necessario fare qualcosa per confrontare gli oggetti, ma non so esattamente cosa dovrei fare.
molto strano che questi vengono registrati come stringhe ancora dicono che sono oggetti. Se si trattasse di un oggetto 'String', allora vedresti un sacco di altre cose oltre al solo valore di stringa. – Adam
Che tipo di oggetto in JavaScript registra un valore stringa ma non è una stringa primitiva? – Adam