Javascript Meteor唯一文档字段?
我正在尝试构建一个学习应用程序,目前它需要从subreddit获取前7篇文章,如果数据库中还没有这篇文章,则将其添加到数据库中。然而,由于某种原因,它同时运行if和else 7次,我不知道为什么。以下是帮助器方法:Javascript Meteor唯一文档字段?,javascript,meteor,Javascript,Meteor,我正在尝试构建一个学习应用程序,目前它需要从subreddit获取前7篇文章,如果数据库中还没有这篇文章,则将其添加到数据库中。然而,由于某种原因,它同时运行if和else 7次,我不知道为什么。以下是帮助器方法: Template.posts.helpers({ posts : function () { Meteor.call('getPosts', "tifu", function(e, results){ var result = JSON.parse(resul
Template.posts.helpers({
posts : function () {
Meteor.call('getPosts', "tifu", function(e, results){
var result = JSON.parse(results.content).data.children;
Session.set('postsResults', result);
});
for(var i=0; i<7; i++){
var result = Session.get('postsResults')[i].data;
if(Posts.find({r_id: result.id}).count() == 0){
console.log("if");
} else {
console.log("else");
};
};
return Posts.find();
}
});
在控制台中运行
Posts.find({r\u id:result.id}).count()==0
时,我得到与Posts.findOne({r\u id:result.id})相同的false==null
但由于某种原因,在javascript文件中,它仍然运行真实部分,然后我得到了50份相同帖子的副本,这正是我试图避免的。在助手中使用Meteor.call
不是最佳选择。每当出现响应性更改时,助手的功能将重新运行。这就是为什么它会运行这么多次
使用模板。改用onCreated
回调:
Template.posts.onCreated(function() {
Meteor.call('getPosts', "tifu", function(e, results){
var result = JSON.parse(results.content).data.children;
Session.set('postsResults', result);
});
});
和你的助手:
Template.posts.helpers({
posts : function () {
var r = Session.get('postsResults')
for(var i=0; i<7; i++){
if(!r) continue;
var result = r[i].data;
if(Posts.find({r_id: result.id}).count() == 0){
console.log("if");
} else {
console.log("else");
};
};
return Posts.find();
}
});
Template.posts.helpers({
职位:职能(){
var r=Session.get('postsResults')
对于(var i=0;我会这样做,因为helpers是异步运行的,所以首先==0它是true,然后另一个语句它是true这就是您得到的其他控制台,例如pineconsole.log(Posts.find({r\u id:result.id}).count())
在if语句中,您将得到0
,lester在1秒后您将得到另一个数字。
Template.posts.onCreated(function() {
Meteor.call('getPosts', "tifu", function(e, results){
var result = JSON.parse(results.content).data.children;
Session.set('postsResults', result);
});
});
Template.posts.helpers({
posts : function () {
var r = Session.get('postsResults')
for(var i=0; i<7; i++){
if(!r) continue;
var result = r[i].data;
if(Posts.find({r_id: result.id}).count() == 0){
console.log("if");
} else {
console.log("else");
};
};
return Posts.find();
}
});