MongoDB从db中获取一个项目

问题描述:

所以我在我的nodejs服务器上实现了一个mongodb。而我所做的是商店的用户通过:MongoDB从db中获取一个项目

function insertUser() { 
 
    var collection = dbb.collection('user'); 
 
     var user1 = {name: user, token: token}; 
 
     collection.insert(user1, function(err, result) { 
 
      if (err) { 
 
       console.log(err); 
 
      } else { 
 
       console.log(result); 
 
      } 
 
     }); 
 
}

function findUserByName(devName) { 
 
\t var collection = dbb.collection('user'); 
 
    collection.find({name: devName}).toArray(function (err, result) { 
 
     if (err) { 
 
      console.log(err); 
 
     } else if (result.length) { 
 
      console.log('Found: ', result); 
 
\t \t \t 
 
      selectedUserToken = result.token; 
 
     } else { 
 
      console.log('No document found'); 
 
      insertUser(); 
 
     } 
 
     dbb.close(); 
 
    }); 
 
}

那么结果将等于:

Found: [ { _id: 57be1cadc281c03ea116c9ab, 
    name: 'Austin Hunter', 
    token: 'dJyXVjMJk08kXWrua8SUjKb....SxACihKZoR53y_wOZmcFNKMmD5q99QNvsp3flL' } ] 

我的问题是,如何能我得到了这个标记等于selectedUserToken,所以我可以用gcm发送推送通知?现在result.token是未定义的。

您应该使用findOne()代替find()因为你只想到一个结果回:

function findUserByName(devName) { 
    var collection = dbb.collection('user'); 
    collection.findOne({name: devName}, function (err, result) { 
     if (err) { 
      console.log(err); 
     } else if (result) { 
      console.log('Found: ', result); 

      selectedUserToken = result.token; 
     } else { 
      console.log('No document found'); 
      insertUser(); 
     } 
     dbb.close(); 
    }); 
} 

但是,如果你想离开你的代码是与find()方法你只需检索的第一个元素find()

function findUserByName(devName) { 
    var collection = dbb.collection('user'); 
    collection.find({name: devName}).toArray(function (err, result) { 
     if (err) { 
      console.log(err); 
     } else if (result.length) { 
      console.log('Found: ', result); 

      selectedUserToken = result[0].token; 
     } else { 
      console.log('No document found'); 
      insertUser(); 
     } 
     dbb.close(); 
    }); 
} 
+0

检索到的结果数组仍然无法正常使用findOne方法正常工作。 –

+0

我仍然没有定义console.log(selectedUserToken) –

+0

我将发布我的整个Nodejs服务器代码的一个pastern。所以你可以看到上下文。 http://pastebin.com/v1ij99fL –

也许result[0].token,因为结果是一组用户项目。