我已经完成了,从mongodb获取数据并使用节点js在html页面上显示它。
问题是它在使用findOne时只显示一个文档。当我使用find时它不显示任何数据。
我需要在我的html文件中进行更改,请建议我。
我的 server.js 文件是
var express = require('express'),
app = express(),
cons = require('consolidate'),
MongoClient = require('mongodb').MongoClient,
Server = require('mongodb').Server;
app.engine('html', cons.swig);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
var mongoclient = new MongoClient(new Server("localhost", 27017));
var db = mongoclient.db('prisync');
app.get('/', function(req, res){
// Find one document in our collection
db.collection('urlinfo').find().toArray(function(err, docs) {
if(err) throw err;
res.render('hello', docs);
});
});
app.get('*', function(req, res){
res.send('Page Not Found', 404);
});
mongoclient.open(function(err, mongoclient) {
if(err) throw err;
app.listen(8080);
console.log('Express server started on port 8080');
});
和我的html文件是
hello.html的
<body>
<nav>
<ul>
<li>
<a href="#" class="button add">Add Product</a>
<div class="dialog" style="display:none">
<div class="title">Add Product</div>
<form action="/search" method="get">
<input id = "name" name="name" type="text" placeholder="Product Name"/>
<input name="code" type="text" placeholder="Product Code"/>
<input name="category" type="text" placeholder=" Category"/>
<input name="brand" type="text" placeholder="Brand"/>
<input type="submit" value="Ok"/>
</form>
</div>
</li>
<li class="radio">
<a href="#" class="button active"></a>
<a href="#" class="button"></a>
<a href="#" class="button"></a>
</li>
</ul>
</div>
</nav>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src="js/index.js"></script>
<h1>Hello, {{name}}!</h1>
<h1>Hello, {{code}}!</h1>
<h1>Hello, {{category}}!</h1>
</body>
答案 0 :(得分:0)
实际上,当您使用findOne时,它只提供一个docs对象,但是当您使用find方法时,它会为您提供docs对象列表。你应该使用ng-repeat迭代列表,如
<span ng-repeat="doc in docs">
<h1>Hello, {{doc.name}}!</h1>
<h1>Hello, {{doc.code}}!</h1>
<h1>Hello, {{doc.category}}!</h1>
</span>
答案 1 :(得分:0)
试试这样..
db.collection('urlinfo').find({}).toArray(function(err, docs) {
if(err) throw err;
res.render('hello', {'docs':docs});
});
});
现在hello.ejs,使用以下代码:
<% for (var d=0;d<docs.length;d++){%>
<h1><%= docs[d].name %></h1>
<h1>Hello, <%= docs[d].code} %></h1>
<h1>Hello, <%=docs[d].category %></h1>
<% } %>
这可能有用。