私は簡単な質問がありますが、ここで同じ問題がたくさん読んでいますが、これらは正確に同じではありません:-(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文を取得し、この方法:
「TypeError:collectionPhotos.find(...)。execは関数ではありません」 – InfoEngi
私の悪い!私は答えを編集しました。見てください。 – deChristo
ご返信ありがとうございます!しかし、私はまだ同じ応答を持っています:(テストのために、私は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