当前位置: 首页 > 知识库问答 >
问题:

如何在发布中将数组转换为光标?

阎裕
2023-03-14

以下代码:

Meteor.push("svse",function(){   
   if(UserUtils.isAdmin(this.userId)) //is Administrator?
       return Svse.find();
   var arr = ["1","1.2"]; //just a example
   var nodes = Svse.find({sid:{$in:arr}}).fetch();
   var newNodes = new Array();
   for(i in nodes){
       var newNode = nodes[i];
       newNode["son"] = ArrayUtils.intersect(arr,newNode["son"]);
       newNodes.push(newNode)
    }
    return newNodes;
});

ArrayUtils={};
Object.defineProperty(ArrayUtils,"intersect",{
value : function(a,b){
    var ai=0;
    var bi=0;
    var result = new Array();
    while( ai < a.length && bi < b.length ){
        if(a[ai] < b[bi] ) {
            ai++;
        } else if(a[ai] > b[bi] ){
            bi++; 
        } else {
            result.push(a[ai]);
            ai++;
            bi++;
        }
    }
    return result;
}
});

在流星启动时导致错误:

 Exception from sub ac338EvWTi2tpLa7H Error: 
      Publish function returned an array of non-Cursors

如何将数组转换为光标?或者像处理ArrayUtils一样处理数组。intersect()在查找查询中是否在此处操作?

共有1个答案

杜祺
2023-03-14

它认为Meteor.push是你第一行代码中的一个错字。

发布函数需要返回Collection游标或Collection游标数组。来自文档:

发布函数可以返回集合。游标,在这种情况下,Meteor将向每个订阅的客户端发布游标的文档。还可以返回集合数组。游标,在这种情况下,Meteor将发布所有游标。

如果您想发布newNodes中的内容并且不想在服务器端使用集合,请在发布中使用this.added。例如:

Meteor.publish("svse",function(){  
  var self = this;
  if(UserUtils.isAdmin(self.userId)) //is Administrator?
    return Svse.find();  // this would usually be done as a separate publish function

  var arr = ["1","1.2"]; //just a example
  Svse.find({sid:{$in:arr}}).forEach( function( newNode ){
    newNode["son"] = ArrayUtils.intersect(arr,newNode["son"]); //is this just repeating query criteria in the find?
    self.added( "Svse", newNode._id, newNode ); //Svse is the name of collection the data will be sent to on client
  });
  self.ready();
});

对于我来说,很难理解填充newNode的find和intersect函数会发生什么。您可能也可以使用find来限制返回的字段。

 类似资料:
  • 我需要将一个整数(代表x.509 KeyUsage掩码)转换为布尔数组,在Java中,我有以下可用函数,可以正常工作: 在这种情况下(144),它应该返回 密钥用法={boolean[9]@976}[0]=真[1]=假[2]=假[3]=真[4]=假[5]=假[6]=假[7]=假[8]=假 在Groovy中运行这个时,我得到 org.codehaus.groovy.control.MultipleC

  • 问题内容: 有没有一种有效的Numpy机制,可以根据条件为true而不是布尔掩码数组来检索数组中位置的整数索引? 例如: 在这种情况下,我想知道指标的地方。是否可以生成这些而不循环? 问题答案: 另外的选择: 这与。

  • 问题内容: 我想将数组转换为Java中的Set。有一些明显的方法可以做到这一点(例如,使用循环),但是我想要一些更整洁的东西,例如: 有任何想法吗? 问题答案: 像这样: 在Java 9+中,如果设置不可修改,则可以: 在Java 10+中,可以从数组组件类型推断出泛型类型参数:

  • 我想把下面的XML转换成PHP数组。有什么建议可以让我如何做到这一点吗?

  • 问题内容: 我想将下面的XML转换为PHP数组。关于如何执行此操作的任何建议? 问题答案: 另一个选择是SimpleXML扩展(我相信大多数PHP安装都标配该扩展名。) http://php.net/manual/zh/book.simplexml.php 您的示例的语法看起来像这样

  • 本文向大家介绍如何在PHP中将数组转换为SimpleXML?,包括了如何在PHP中将数组转换为SimpleXML?的使用技巧和注意事项,需要的朋友参考一下 我们可以使用array_walk_recursive()函数解决上述问题。array_walk_recursive()是内置的PHP函数。此函数将数组转换为XML文档,其中将数组的键转换为值,并将数组的值转换为XML元素。 让我们用一个简单的例