我正在使用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链接并记录链接说未定义.
解决方法:
如果数据库对象中存在实际上不存在于为模型定义的模式中的字段,则它们仍将“记录”但您无法正常访问该属性的值.
在大多数情况下,您确实希望在架构中正确定义项目:
githubLink: String
或者您可以使用.get()
方法访问您不想定义的属性:
result.get('githubLink')