Ich habe eine mongodb-Datenbank namens pokemon
mit einer Sammlung namens pokemons
. Hier ist mein Versuch, eine Funktion zu schreiben, die einen find()
Betrieb in mongodb tun:Wie man JSON aus MongoDB in Node.js zurückgibt?
'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?
});
};
ich dann rufen Sie diese Funktion in einer anderen Datei:
var express = require('express');
var router = express.Router();
router.get('/pokedex', function (req, res) {
res.jsonp(db.getPokemonByName('Dratini'));
})
This link ist hilfreich bei der zeigt, wie mongodb Daten zu protokollieren zu der Konsole durch eine Art von each()
Methode auf dem Cursor-Objekt, aber ich weiß nicht, wie return
Json durch die getPokemonByName
Funktion. Ich versuchte, eine leere Array auf dem Stammbereich der getPokemonByName
Funktion und Push-Daten in das Array mit jeder Iteration der .each
Methode zeigt in dieser Verbindung zu definieren, aber ich glaube, ich kann immer noch nicht das Array zurück, weil es nach der Tat passiert, .
BTW, ich mache das wirklich nur zum Spaß und um etwas über MongoDB und Node.js zu lernen, also möchte ich kein ODM wie Mongoose benutzen, um etwas von dieser Arbeit für mich zu erledigen.
Danke für jede Hilfe!
bearbeiten
Einfach nur neugierig, für jeden, der dies liest, warum diese Frage downvoted bekommen? Liegt es daran, dass die Antwort aus anderen, ähnlichen Fragen oder etwas anderem gewonnen werden kann?
Danke!
Mögliches Duplikat von [Wie die Antwort von einem asynchronen Aufruf zurückgegeben wird?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call) –
überprüfen Sie es: http://stackoverflow.com/questions/19696240/proper-way-to-return-json-using-node-or-express –
Diese zwei Verbindungen sind nicht verwandt. Ich habe nicht wirklich verstanden, warum es abgelehnt wird. – Genc