2

我想使用我的 MongoDB 中的数据通过 Node.js 在 HTML 代码上显示。到目前为止,我知道如何将来自 HTML5 公式的信息插入到我的 MongoDB 中,以及如何读出这些信息 - 但我的结果find()是:

[ { name: 'Mr. Banana', _id: 123aclongvalueinHEX001c000001 } ]

node.exe这是函数的 cmdshell 上显示的简单结果示例:

People.find(
    {},
    ['name'],
    function(err, docs) {
        if (!err){ 
            console.log(docs);
        }
        else { throw err;}
    }
);

People是 Mongoose 模式并具有一些属性,在此示例中,我仅搜索所有名称,其中仅保存一个实体People

所以问题是,我想永远寻找它,我如何只提取Mr. Banana而不提取整个[{ name: and id}]- 东西?我想它有一些功能或选项,但我找不到它!我可以发明一个函数来通过 leftstr 等来修剪它。这将是我的紧急解决方案。

4

2 回答 2

3

如果您只想在name结果中输出第一个文档的属性:

console.log(docs[0].name);

如果您想阻止_id甚至包含在返回的文档中,请参阅这篇文章

于 2012-07-26T13:57:33.007 回答
1

我得到了猫鼬具有称为查询流的功能的提示。这导致了我的解决方案。

var Bericht = new Schema({
    name     : String
  , mail     : String
  , standort : String
  , betreff  : String
  , inhalt   : String
  , datum    : Date
});
var Bericht = mongoose.model('Bericht', Bericht);

  var stream = Bericht.find().stream()
  , names = []
  , mails = []
  , standorts = []
  , betreffs = []
  , inhalts = []
  , datums = []
  , i=0;

function closeHandler() {
    function closeHandler() {
        console.log(JSON.stringify(names));
    };
     stream.on('data', function (doc) {
            if (doc.name) {
        names.push(doc.name);
        mails.push(doc.mail);
        standorts.push(doc.standort);
        betreffs.push(doc.betreff);
        inhalts.push(doc.inhalt);
        datums.push(doc.datum);
      }
    })
    stream.on('close', closeHandler) 

我的架构有多个名称,在本例中是 6 个属性。使用 stream.on 函数后,我将数据库中的所有内容放入一个数组中,例如 mails[1] 是我的 mongodb 中第二个条目的邮件。有了它,我可以使用函数轻松地在 html 中显示我的数据库的全部内容。也许这太多了,但由于喜欢这个板,我会完成这个线程。

使用此函数,您将构建一个包含所有名称的简单表作为返回值:

    function namestable(){
        value = "<table border='1'><tr><th>Namen</th></tr>"
        for(var i=0;i<names.length;i++){
    value+="<tr><td>"+names[i]+"</td>";
        ;}
        value+="</table>";
    return value;
    }

因此,当您构建 html 代码时,您只需将此函数添加到您的 nodejs 中:

var body = '<html>'+
    '<head>'+
    '<meta http-equiv="Content-Type" content="text/html; '+
    'charset=UTF-8" />'+
    '</head>'+
    '<body>'+
    '<form action="/upload" method="post">'+
    namestable()+
    '<input type="submit" value="Hario" />'+
    '</form>'+
    '</body>'+
    '</html>';

        response.writeHead(200, {'Content-Type': 'text/html'});
        response.write(body);
        response.end();     

我喜欢 :)

于 2012-08-01T11:25:08.430 回答