2017-06-11 75 views
0

我正在使用貓鼬從數據庫中獲取人員數據。這是我使用的代碼: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: '[email protected]', 
githubLink: 'https://github.com/myGithub' } 

這是從的console.log(result.firstname)結果;和console.log(result.githubLink);

MyName 
undefined 

這個承諾是不知何故搞亂了這個結果?這真的很奇怪,因爲只記錄結果顯示我的github鏈接並記錄鏈接說未定義。

+0

是你確定在任何地方都沒有任何拼寫錯誤? –

+0

我已經從console.log(result)的輸出複製並粘貼了「githubLink」,並且我一直在盯着這段代碼30分鐘。我不認爲這是一個錯字 – Frostbch

+1

複製你正在做日誌的代碼的實際行,並在你的問題中顯示模式。 –

回答

2

如果數據庫對象中存在的字段實際上不存在於爲該模型定義的模式中,那麼它們仍會「記錄」,但無法正常訪問該屬性的值。

在大多數情況下,你真的想在你的架構正確定義項:

githubLink: String 

或者你可以訪問屬性,你故意不想使用.get()方法來定義:

result.get('githubLink')