Come faccio a catturare una query mongodb come stringa e visualizzalo nella mia pagina del mio nodo JS (usando il driver mongojs)?

StackOverflow https://stackoverflow.com//questions/10690090

Domanda

Vorrei essere in grado di interrogare il mio mongodb e mostrare questo risultato sulla mia pagina web fatta con il nodo ... in questo momento sto usando il driver mongojs - ho trovato il conducente molto buono per mettere i dati nelDB - La sintassi è la stessa del guscio del MONGO e posso inserire il codice direttamente nell'app per nodo.Questo compito ... mostra semplicemente i risultati della query sulla pagina web, o anche sulla console, è stato dimostrato molto difficile.Ecco le parti rilevanti del mio codice e cosa ho provato.

var databaseUrl = "test"; // "username:password@example.com/mydb"
var collections = ["graph1"]
var db = require("mongojs").connect(databaseUrl, collections);

console.log(db.graph1.find());
.

Ho fatto una raccolta chiamata Graph1 e nel prompt mongo, questo rendisce i risultati.Nota ... Voglio visualizzarlo in HTML ... ma sposo se riesco a farlo stampare per console, posso ottenerlo nel mio html.

Attualmente emette questo:

{_oncursor: { get: [Function], put: [Function] } } 
.

Qualche tipo di prototipo per quello che voglio effettivamente, che è questo:

{ "x" : "0", "y" : "1343725568", "_id" : ObjectId("4fba6....") }
.

È stato utile?

Soluzione

Prova questo:

    db.graph1.find( {}, function(err, result ){ 
    if (err || !result ) console.log(" an error has occurred" );
    else {
    console.log(result);
    }
    });
.

Il registro della console che avevi registrato il valore di ritorno DB.Graph1.Find () () che è il suo prototipo di funzione.Non restituirà nulla di utile perché è una funzione asincrona.L'unico modo per fare cose utilizzabili con i dati che recupera è passare un callback in cui gestirà i dati:

    db.graph1.find( { //what you want to search for here }, callback);

    function callback(result_from_mongo) {
    // do stuff here with result_from_mongo
    }
.

Altri suggerimenti

Per l'eredità, tutti dovrebbero sapere che l'unica volta che puoi manipolare i risultati della query è nel callback ... quindi non impostarlo su A a un var da ingannare con dopo, solo entro il callback) -=.

Utilizzare quanto segue per rendere la query un risultato di una stringa senza guai.È roba della biblioteca standard.:

  var results_not_ugly_or_messed_up = (JSON.stringify(result));
.

Se si desidera essere Ghetto e utilizzare i risultati al di fuori della richiamata, è possibile chiamare sempre un script / Python / Sh / Bat / qualunque script con il risultato "rigoroso" (in questo esempio, risultati_not_ugly_or_messed_up) come parametro aConservare in un file, ecc., Per leggere e quindi utilizzare come ti per favore.

Per un esempio completo di vita reale:

db.newguestbook.find({"Name" : /[Aa]/ },[],function(err,p) //newguestbook is a collection I have    
//you will need to change that unless you make a collection called newguestbook
{
    cursor = p;
    console.log(cursor);
    console.log(JSON.stringify(cursor))); //We have a nice string, see?
    var exec = require('child_process').exec;
    exec("perl writetofile.pl " + JSON.stringify(cursor) , function(err, 
    stdout, stderr)
    {
        console.log("Perl run to store this result in a file");
    });

});
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top