2016-11-15 7 views
1

私は簡単な質問がありますが、ここで同じ問題がたくさん読んでいますが、これらは正確に同じではありません:-(collection.findone()の結果を保存するには

私は "addevent"と呼ばれるREST関数を持っています。この関数はjson入力(req)を取得し、json配列を反復処理して余分な配列に格納するIDを取得します。関数は、すべての単一idのmongodb内を検索し、このIDからのいくつかの追加情報(このIDの格納されたURLなど)を保存しなければなりません "console.log(result.link)私は余分な配列(urlArray)にこのリンクを格納する必要があること。

これで、collection.findone()の結果をどのように保存できますか?私はfindone()がドキュメントを返すのではなく、カーソルを返すことについて何かを読んでいますか?どういう意味ですか?私の場合はどうしたらいいですか?

コードです:

exports.addevent = function(req, res) { 

var ids = req.body;     
var pArray = new Array(); 
var urlArray = new Array(); 

var eventName = ids.name;   

for(var i in ids.photos) {     
    photoArray.push(ids.photos[i]);   
    var id = ids.photos[i]._id; 

    var collection = db.get().collection('photos'); 
    collection.findOne({'_id':new mongo.ObjectID(id)},function(err, result) { 
     console.log(result.link); 
    } 
    ) 

} 

多くの感謝!

--------------------

[OK] 、私はそれが非同期コールバックと関係があると思います。私は記事を見つけましたが、私の場合はそれをどのように実装するのか分かりません。 JavaScriptで "約束" について

http://tobyho.com/2011/11/02/callbacks-in-loops/

そして何か。

var foundPhoto = collection.find({_id':new mongo.ObjectID(id)}, function(err, photo){ 
         if(!err){ 
         return photo; 
         } else { 
         console.log(err) 
         return null; 
         } 
        }); 

あなたが「写真」変数にクエリのreturn文を取得し、この方法:

答えて

0

あなたの検索は次のように何かをした結果を保存することができます。

+0

「TypeError:collectionPhotos.find(...)。execは関数ではありません」 – InfoEngi

+0

私の悪い!私は答えを編集しました。見てください。 – deChristo

+0

ご返信ありがとうございます!しかし、私はまだ同じ応答を持っています:(テストのために、私はIDのためのループと検索direktを削除しました。しかし、同じIDを得るか、私の場合は "リンク"を取得したい場合、出力は常に "未定義"です。 var collectionPhotos = db.get()。collection( 'photos'); var foundPhoto = collectionPhotos.find({'_ id':新しいmongo.ObjectID( '5829919a0b93eb0d44c83374')}、関数(エラー、写真){ もし(ERR!){ リターン写真; }他{ にconsole.log(ERR) リターンNULL;} }); はconsole.log( "写真:" + foundPhoto._id); //またはfoundPhoto .link – InfoEngi

関連する問題