2011-10-16 8 views
0
Phone.find {number : "12345678"}, (err,phone) -> 
      phone.forEach (item, i) -> 
       console.log item 
       console.log item.subdomain 
       console.log item.subdomain_id 
       console.log item.city 

リターン:それは文書内かどうのNode.js:ドキュメントはundefinedを返します - マングース

{ _id: 4e9b614e01c642c2be000002, 
    city: 'San Francisco', 
    country: 'US', 
    indicative: '234', 
    number: '12345678', 
    subdomain_id: 4e9b532b01c642bf4a000003 } 

undefined 
undefined 
San Francisco 

はなぜitem.subdomain_idが未定義戻っていますか?

編集:

私はスキーマにsubdomain_idを追加し、それが機能するようになりました(item.subdomain_id)が、しかし、私は、唯一のIDをサブドメイン文書が届きません。私はitem.subdomainを取得し、その上でメソッドを呼び出すことができます。

おかげ

+0

正しく入力されていますか? _idとsubdomain_idは有効ではありませんjson - それらはStringでもNumberでもはありません。 – wombleton

答えて

0

あなたがObjectIDを保存している場合は、文書を埋め込まれていない、あなたが参照しているオブジェクトを取得しpopulate()機能を使用する必要があります。

Phone.find({number : "12345678"}).populate('subdomain_id').run (err, phones) -> 
    for phone in phones 
    console.log phone 

http://mongoosejs.com/docs/populate.html

0

だから、僕はいました同じ質問に対する回答を探します。私がやっていたことは、json findクエリを使うためにMongooseのfind(オブジェクト継承を通して)を使用していました。私は忘れてしまったと考えられていなかったが、戻りオブジェクトが配列になるということです

User.find({email:req.body.email}).exec(function(err,user){ 
    console.log(user.email); 
} 

:それはのように見えた何

は、このでした。これは、検索クエリが簡単に複数のオブジェクトを含むことが多いためです。このため、あなたはあなたの結果を列挙する必要がありますのいずれか、またはあなたのクエリのみfindOne(と私たちはfindOneを使用していない)に期待されている場合は、そのようなオブジェクト0を簡単に呼び出すことができます。

User.find({email:req.body.email}).exec(function(err,user){ 
    console.log(user[0].email); 
} 

私は願っていますこれは、あなたがまだ問題を抱えている場合は、私たちにお知らせください。

関連する問題