Come faccio a catturare una query mongodb come stringa e visualizzalo nella mia pagina del mio nodo JS (usando il driver mongojs)?
-
12-12-2019 - |
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....") }
. 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");
});
});
}
.