2016-08-24 14 views
-1

私は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' } ] 

私の質問は、どのようにすることができます私はそのトークンをequal selectedUserTokenので、gcmでプッシュ通知を送信できますか?今すぐresult.tokenは定義されていません。

答えて

1

あなただけ戻って単一の結果を期待するので、あなたが代わりにfind()findOne()を使用する必要があります。

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()によって検索されます。

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サーバーコード全体のパスを投稿します。あなたは文脈を見ることができます。 http://pastebin.com/v1ij99fL –

0

おそらくresult[0].tokenです。結果はユーザーアイテムの配列なので、

関連する問題