Ho un database mongodb chiamato pokemon
con un insieme chiamato pokemons
. Qui è il mio tentativo di scrivere una funzione che farà un'operazione find()
in MongoDB:Come restituire JSON da MongoDB in Node.js?
'use strict';
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
// db url
var url = 'mongodb://localhost:27017/pokemon';
exports.getPokemonByName = function (name) {
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
var cursor = db.collection('pokemons').find({name: name});
// how to return json?
});
};
Ho poi chiamare questa funzione in un altro file:
var express = require('express');
var router = express.Router();
router.get('/pokedex', function (req, res) {
res.jsonp(db.getPokemonByName('Dratini'));
})
This link è disponibile a mostrare come accedere i dati MongoDB alla console eseguendo una sorta di metodo each()
sull'oggetto del cursore, ma non so come eseguire return
json tramite la funzione getPokemonByName
. Ho provato a definire una matrice vuota sull'ambito radice della funzione getPokemonByName
e inviare i dati a quell'array con ogni iterazione del metodo .each
mostrato in quel collegamento, ma penso di non poter ancora restituire quell'array perché accade dopo il fatto .
BTW, lo sto facendo solo per divertimento e per imparare su MongoDB e Node.js, quindi non voglio usare o un ODM come Mongoose per fare un po 'di questo lavoro per me.
Grazie per qualsiasi aiuto!
Modifica
Solo per curiosità, per tutti coloro che sta leggendo questo, perché è a questa domanda sempre downvoted? È perché la risposta può essere raccolta da altre domande simili o qualcos'altro?
Grazie!
Possibile duplicato di [Come restituire la risposta da una chiamata asincrona?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call) –
controllalo: http://stackoverflow.com/questions/19696240/proper-way-to-return-json-using-node-or-express –
Questi due collegamenti non sono correlati. Non ho davvero capito perché è downvoted. – Genc