Estou construindo um aplicativo Express / Node e tentando construir um controlador de login. Quando a solicitação chega por meio de / login, posso encontrar os detalhes do usuário em minha coleção Mongo com Mongoose 'model.findOne, mas o problema é que o que a função retorna não é tudo o que está no documento mongo.
Consultar os dados por meio do Robo 3T retorna todas as informações
Aqui está o meu modelo
{
firstname: String,
surname: String,
fullname: String,
firthDate: Date,
identityType: String,
identityNumber: String,
address: {
residential: Object,
business: Object
},
contact: {
email: String,
cellphone: String,
home: String,
business: String,
fax: String
},
compliance: {
type: String,
value: String
},
account: {
type: String,
username: String,
password: String,
masala: String
},
created: Date,
updated: Date
}
Aqui está meu controlador:
user.findOne({"account.username": username}, (err, doc) => {
if (!err) {
// found user. Compare passwords and return JWT;
console.log(doc);
bcrypt.compare(password, doc.account.password, (err, isValid) => {
// I get an error here : Cannot read property password of undefined.
if (!err) {
if (isValid) {
// generate jwt and send back to user;
}
} else {
// invalid password provided;
}
});
} else {
}
});
Recebo um erro: Não é possível ler a propriedade "senha de indefinido. E esta é a resposta que está em" doc ":
{
firstname: "hello",
surname: "world",
fullname: "hello world",
firthDate: "01 January 1970",
identityType: "idnumber",
identityNumber: "12345",
address: {
residential: {},
business: {}
},
contact: {
email: "",
cellphone: "",
home: "",
business: "",
fax: ""
},
compliance: {
type: "",
value: ""
}
}
Parece que os dados "doc.account" não são retornados como parte da resposta da função findOne. Não sei por que, porque estou usando os dados de "doc.account" para pesquisar em primeiro lugar.
O esquema da sua conta está errado. Para objetos aninhados, deve ser assim.
acount:{
username: {type:String},
password: {type:String},
}
Agora este será considerado um objeto com as propriedades nome de usuário e senha
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加