我正在使用mongoose从数据库中获取人员数据。这是我使用的代码:
return new Promise((resolve, reject) => {
Person.findOne({}, (err, result) => {
if(err) {
reject(err);
} else {
console.log(result);
console.log(result.firstname);
console.log(result.githubLink);
resolve(result);
}
});
});
这是从console.log(结果)
输出的{ _id: 593c35e6ed9581db3ef85d75,
firstname: 'MyName',
lastname: 'MyLastName',
jobtitle: 'Web Developer',
email: 'foo@example.com',
githubLink: 'https://github.com/myGithub' }
这是来自console.log(result.firstname)的结果;和console.log(result.githubLink);
MyName
undefined
这个承诺是否会以某种方式弄乱这个结果?它真的很奇怪,因为只记录结果显示我的github链接并记录链接是未定义的。
答案 0 :(得分:2)
如果您的数据库对象中存在实际上不存在于为模型定义的模式中的字段,那么它们仍将“记录”但您无法正常访问该属性的值。
在大多数情况下,您确实希望在架构中正确定义项目:
githubLink: String
或者您可以使用.get()
方法访问您不想定义的属性:
result.get('githubLink')