gpt4 book ai didi

meteor - 如何在发布中将数组转换为游标?

转载 作者:行者123 更新时间:2023-12-04 18:43:22 27 4
gpt4 key购买 nike

以下代码:

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;
}
});

在 meteor 启动导致错误:

来自 sub ac338EvWTi2tpLa7H 错误的异常:
发布函数返回非游标数组

如何将数组转换为游标?或者像 ArrayUtils.intersect() 一样处理数组在查找查询中操作 here ?

最佳答案

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

发布函数需要返回一个集合游标或一个集合游标数组。来自 docs :

Publish functions can return a Collection.Cursor, in which case Meteor will publish that cursor's documents to each subscribed client. You can also return an array of Collection.Cursors, in which case Meteor will publish all of the cursors.



如果您想发布 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 并限制 fields 来做同样的事情。回来。

关于meteor - 如何在发布中将数组转换为游标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19649204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com