Javascript 如何将数组/值作为光标返回到模板中?

Javascript 如何将数组/值作为光标返回到模板中?,javascript,arrays,meteor,return-value,return-type,Javascript,Arrays,Meteor,Return Value,Return Type,我有一个helper函数,它返回一个数组,而不是传统的db.dbName.find()游标。如何编写返回数组,使其反映为一个光标,类似于可在模板中使用的db.dbName.find()生成的光标 查找以下我的助手函数: var arrayTest = Meteor.call('getUserCategoryArray', function(error, results){ if(error){ console.log(error.reason); } el

我有一个helper函数,它返回一个数组,而不是传统的db.dbName.find()游标。如何编写
返回数组
,使其反映为一个光标,类似于可在模板中使用的
db.dbName.find()
生成的光标

查找以下我的助手函数:

    var arrayTest = Meteor.call('getUserCategoryArray', function(error, results){
    if(error){
        console.log(error.reason);
    } else {          

     var results1 = results.toString();
     var results2 = results1.split(",");
     alert("Array content: " +results2);
     alert(results2[0]);
     alert(results2[1]);
     alert(results2[2]);

     return results2;

     }
 })
解释部分代码:自上而下:警报成功打印:

Array content: shoes,clothes,watches

shoes

clothes

watches
此警报仅用于确认results2是一个工作数组。 现在,如何对返回值/数组进行编码,以便能够在模板中使用它,就像它是由
db.dbName.find()查询返回的游标一样


非常感谢您的帮助。

您的问题不在于阵列,而在于同步与异步编程。正如@mutdmour提到的,空格键可以很好地处理助手的数组

在呈现模板时,可以多次调用帮助程序,因此它不应该执行任何异步操作或产生任何副作用。您的助手正在进行异步调用,因此这是一个问题

您看到的问题是,这样的调用是异步的,而助手需要是同步的。因此,您将很难让助手按原样工作

在许多情况下,助手会返回集合的内容,或将光标返回集合的内容。我不知道你的应用程序,但发布/订阅收藏内容是更好的选择吗

如果不是,并且必须是方法调用的结果,那么通常我会:

  • 在onCreated()中进行调用
  • 将结果写入反应式var
  • 从帮助器返回被动var
  • e、 g


    您可以将数组传递给#每个把手。签出@mutdmour谢谢,但我无法理解如何将其应用到我的代码中。我在我的模板中尝试了这个:
    {{{each results2}}{{this}}{{/each}}
    ,它似乎不起作用。我还尝试了helper函数名:allCategorie,因此在模板中我尝试了
    {{{{each allCategories}}{{this}}{{/each}
    。还是不行。谢谢你的帮助
    Template.Foo.onCreated(function() {
        let self = this;
        self.clothing = new ReactiveVar();
    
        Meteor.call('getUserCategoryArray', function(error, results) {
            if (!error) {
                // or whatever you need to do to get the results into an array
                self.clothing.set(results);
            }
        });
    });
    
    Template.Foo.helpers({
        clothing() {
            return Template.instance().clothing.get();
        }
    });