ho questo codice:Perché hasOwnProperty del modello di mangusta restituisce false quando la proprietà esiste?
user.findOne({ 'email' : email }, function(err, User)
{
if (err)
{
return done(err);
}
if (!User)
{
return done(null, false, { error : "User not found"});
}
if (!User.hasOwnProperty('local') || !User.local.hasOwnProperty('password'))
{
console.log("here: " + User.hasOwnProperty('local')); // displays here: false
}
if (!User.validPass(password))
{
return done(null, false, { error : "Incorrect Password"});
}
return done(null, User);
});
Dal momento che l'applicazione supporta altri tipi di autenticazione, ho un modello di utente che ha nidificato oggetto denominato locale che assomiglia
local : { password : "USERS_PASSWORD" }
Così durante login voglio controlla se l'utente ha fornito una password ma ho riscontrato questo problema interessante. mio oggetto di prova si presenta così:
{ _id: 5569ac206afebed8d2d9e11e,
email: '[email protected]',
phno: '1234567890',
gender: 'female',
dob: Wed May 20 2015 05:30:00 GMT+0530 (IST),
name: 'Test Account',
__v: 0,
local: { password: '$2a$07$gytktl7BsmhM8mkuh6JVc3Bs/my7Jz9D0KBcDuKh01S' } }
ma console.log("here: " + User.hasOwnProperty('local'));
stampe here: false
Dove ho sbagliato?
Come sono definiti utente e utente? Stai assumendo che siano uguali? –
No, non sono uguali Uno è 'var user = require ('../ models/user');' che è il modello di mangusta L'altro è l'argomento di callback nel codice sopra –
ok, questo è un un po 'di confusione. Di solito dovresti usare solo le cose che iniziano con una lettera maiuscola per i costruttori. –