Json 包含收集数据的页面
Json page with collection data
我是 nodejs 和流星的新手。我需要创建一个页面 content-type
application/json
和来自 mongo 集合的数据。所以当收集数据改变时json页面必须改变。
对于 json 页面我使用这个例子:
if (Meteor.isServer) {
Meteor.startup(function () {
try{
var interval = Meteor.setInterval(function() {
var result = Meteor.http.call("GET", "http://192.168.2.144//ihale/meteorGetPage" );
var resultJson = JSON.parse(result.content);
var json = IhaleCollection.findOne();
IhaleCollection.update(json, {$set: {json: resultJson}});
}, 1000);
}
catch(err) {
console.log(err);
}
});
Router.map(function() {
this.route('jsonExample', {
where: 'server',
path: '/json',
action: function() {
var obj = IhaleCollection.findOne();
var headers = {'Content-type': 'application/json'};
this.response.writeHead(200, headers);
this.response.end(JSON.stringify(obj));
}
});
});
}
当 Meteor.startup
我开始每秒更新 IhaleCollection
。
那么,当 IhaleCollection
更改时,我如何更新 json 页面?
你不能。反正不是这样。 JSON 没有内置机制来检测源是否已更改,并且假设路由器端点正在输出没有 javascript 的原始 JSON 数据,则不会发生自动更新。只有当客户端刷新端点时才会有更新。
Meteor 通过在基础 html 页面中插入 javascript 来处理反应性数据。如果你想利用它,那么你必须编写一个模板,编写一个辅助方法 return JSON 并在正文中使用辅助方法。
辅助方法应如下所示:
Template.jsondoc.helpers{(
json: function(){
return JSON.stringify(IhaleCollection.findOne());
}
})
模板可以这么简单:
<template name="jsondoc">
{{json}}
</template>
您的路线将像这样简单:
Router.route('/jsondoc');
我是 nodejs 和流星的新手。我需要创建一个页面 content-type
application/json
和来自 mongo 集合的数据。所以当收集数据改变时json页面必须改变。
对于 json 页面我使用这个例子:
if (Meteor.isServer) {
Meteor.startup(function () {
try{
var interval = Meteor.setInterval(function() {
var result = Meteor.http.call("GET", "http://192.168.2.144//ihale/meteorGetPage" );
var resultJson = JSON.parse(result.content);
var json = IhaleCollection.findOne();
IhaleCollection.update(json, {$set: {json: resultJson}});
}, 1000);
}
catch(err) {
console.log(err);
}
});
Router.map(function() {
this.route('jsonExample', {
where: 'server',
path: '/json',
action: function() {
var obj = IhaleCollection.findOne();
var headers = {'Content-type': 'application/json'};
this.response.writeHead(200, headers);
this.response.end(JSON.stringify(obj));
}
});
});
}
当 Meteor.startup
我开始每秒更新 IhaleCollection
。
那么,当 IhaleCollection
更改时,我如何更新 json 页面?
你不能。反正不是这样。 JSON 没有内置机制来检测源是否已更改,并且假设路由器端点正在输出没有 javascript 的原始 JSON 数据,则不会发生自动更新。只有当客户端刷新端点时才会有更新。
Meteor 通过在基础 html 页面中插入 javascript 来处理反应性数据。如果你想利用它,那么你必须编写一个模板,编写一个辅助方法 return JSON 并在正文中使用辅助方法。
辅助方法应如下所示:
Template.jsondoc.helpers{(
json: function(){
return JSON.stringify(IhaleCollection.findOne());
}
})
模板可以这么简单:
<template name="jsondoc">
{{json}}
</template>
您的路线将像这样简单:
Router.route('/jsondoc');