节点js表示未加载mongodb数据库内容

时间:2016-08-09 04:27:52

标签: javascript node.js mongodb templates express

尝试学习MongoDB for Node.js

我是app.js

var express = require('express'),
  app = express(),
  engines = require('consolidate'),
  MongoClient = require('mongodb').MongoClient,
  assert = require('assert');

app.engine('html', engines.nunjucks);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');

MongoClient.connect('mongodb://localhost:27017/startup', function(err, db) {

  assert.equal(null, err);
  console.log("Successfully connected to MongoDB.");

  app.get('/', function(req, res) {

    db.collection('startup').find({}).toArray(function(err, docs) {
      res.render('startup', {
        'name': docs
      });
      console.log(docs);

    });

  });

  app.use(function(req, res) {
    res.sendStatus(404);
  });

  var server = app.listen(3000, function() {
    var port = server.address().port;
    console.log('Express server listening on port %s.', port);
  });

});

startup集合中还有文档:

documents in the startup collection

模板文件是:

<h1>startups</h1>
{% for s in startup %}
<li><a href="https://www.google.com/search?q={{ s.name }}">{{ s.name }}, {{ s.Founded }}</a>
</li>
{% else %}
<li>No startups found.</li>
{% endfor %}

然而,结果说:

no startups found

有人能指出我,我错在哪里吗?

1 个答案:

答案 0 :(得分:2)

您将初创公司集合作为name属性传递,但在模板中,您出于某种原因尝试使用startup标识符访问它。

改变,你也很好。