2017-04-01 113 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将是未定义的。 –