在Ubuntu上运行
Data.js
//Collections
Database = new Meteor.Collection('data');
if (Meteor.isClient) {
Template.main.data = function () {
var c = Database.find();
return c;
};
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
});
}
data.html
<head>
<title>data</title>
</head>
<body>
{{> main}}
</body>
<template name="main">
{{data}}
</template>
我使用mongo:
插入数据库> db.Database.insert({title: 'ShouldWork'});
> db.Database.find();
{ "_id" : ObjectId("5296403855ee6e1350b35afb"), "title" : "ShouldWork" }
然而,当我运行网站时,它只返回[object Object] ..
应该有自动发布和不安全, 这已经成为我学习框架的障碍。
答案 0 :(得分:6)
这是预期的。这是因为.find()
的结果始终是游标并且具有多个对象。
你必须决定你想要哪一个,或者你想要遍历每一个。
1)您想使用一个结果:
var c = Database.findOne();
或2)你想迭代每一个:
{{#each data}}
{{title}}
{{/each}}
此外,请确保使用{{data}}
的属性,因为{{data}}
即使findOne
仍然是[Object object]
。您应该使用类似{{data.title}}
的内容,具体取决于您要使用的属性。
答案 1 :(得分:1)
如何从html访问Mongo DB中的数据?
首先,您需要将 Mongo数据库实例存在于全局变量 中:i必须在任何.js文件中声明,如下所示。 它不是客户端或服务器代码的一部分
假设我们在其中一个js文件中创建了一个事件集合。
EventList = new Mongo.Collection('Events');
现在,为了从HTML访问所有对象,我们需要在.js文件 中的客户端内部使用 帮助程序功能。以下是Helper使用的: -
Template.viewEvent.helpers ({
//NOTE : 'event' is the name of variable from html template
'event' : function () {
//returns list of Objects for all Events
return EventList.find().fetch();
}
'users' : function () {
//returns reference to Document for all users
return UserList.find().fetch();
}
});
左侧 在.html上显示内容 : -
Say EventList Collection包含字段Event_Name,Event_Date。下面是html模板代码
<template name="viewEvent">
<h2>View Event</h2>
<!-- Iterate on all Objects fetched by the Helper Class-->
{{#each event}}
{{Event_Name}} : {{Event_Date}}
{{/each}}