Как я зафиксирую запрос MongoDB в качестве строки и отобразить его в моем узле JS-странице (с помощью драйвера Mongojs)?

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

Вопрос

Я хотел бы иметь возможность запросить мой mongoDB и отображать этот результат на моей веб-странице, сделанной с узлом ... прямо сейчас я использую драйвер Mongojs - я нашел драйвер очень хорошо для положения данных вБД - синтаксис такой же, как оболочка Mongo, и я могу поставить код прямо в приложение моего узла.Это задание ... просто показывая результаты запроса на веб-страницу или даже на консоли, доказано очень сложно.Вот соответствующие части моего кода и что я пытался.

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

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

Я сделал коллекцию под названием Graph1 и в подсказке Mongo это дает результаты.Примечание ... Я хочу отобразить его в HTML ... но я вижу, если смогу напечатать его напечатать на консоль, я могу получить его в моем HTML.

В настоящее время это выводит это:

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

Какой-то прототип для того, что я на самом деле хочу, что это:

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

Это было полезно?

Решение

Попробуйте:

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

В журнале консоли, который у вас там была печатана значение возврата DB.GRAPH1.FIND (), которое является его функциональным прототипом.Это не вернет ничего полезного, потому что это асинхронная функция.Единственный способ сделать использование использования с данными, которые он извлекает, - пройти обратный вызов, в котором будут обращаться к данным:

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

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

Другие советы

Для наследия, каждый должен еще раз знать, что единственный раз, когда вы можете манипулировать результатами вашего запроса, находится в обратном вызове ... поэтому не устанавливает его до VAR, чтобы дурачиться со взлом, только в обратном вызове) -=.

Используйте следующее, чтобы запрос привел к строке без проблем.Это стандартные библиотечные вещи.:

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

Если вы хотите быть гетто и использовать свои результаты за пределами обратного вызова, вы всегда можете вызвать Perl / Python / Sh / Bat / любой сценарий с вашим «строгим» результатом (в этом примере, Results_NOT_UGLY_OR_MESSED_UP) в качестве параметраХраните его в файле и т. Д., Чтобы считывать, а затем использовать как вы, пожалуйста.

для полного реального примера:

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");
    });

});
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top