2017-04-01 109 views
0

我是Node js和Mongoose的新手,我堅持使用這一個查詢。mongoose從查詢文檔獲取嵌套字段值

exports.getIndividual=(matchId,phone)=> 
new Promise((resolve,reject)=>{ 
var e="matchPersonal.m"+matchId+".bo1"; 
query={}; 
query[e]=1; 

var quer=usersc.findOne({phone:"8989898980"}).select(query); 
quer.exec(function (err, matc) { 

var m=matc.toObject(); 

console.log('',m); 

當我運行此查詢我我的控制檯上得到這個東西

 {matchPersonal:{m1:{bo1:3}}} 

但我只需要3作爲我的輸出,我不能用點運算符來讀取對象屬性直接因爲

爲「+」不能用在這裏,請幫助
var b=matchPersonal.m+matchId.bo1 

不工作

回答

0

嘗試:

var mNum = m+matchId; 
var b=matchPersonal[mNum].bo1 

因爲您可以使用點和括號來選擇屬性,但括號也可以與變量一起使用。

+0

不工作,說m1是m + matchId是未定義的,但如果我讓它像matchPersonal.m1.bo1我得到3我的輸出,所以它也沒有與我的架構問題 –

+0

謝謝它的工作,我清理後我的緩存和mNum =「m」+ matchId,因爲沒有它,m將是未定義的。 –