更新的问题: 简单的客户端 HTTP.get() 调用在 iOS 模拟器上不起作用。相同的调用正在获取数据,并且它在浏览器中的模板中完美显示(localhost:3000) 早些时候,我认为这与本地集合有关,但问题实际上是 HTTP.get 调用,它没有在 cordova(ios 模拟器或设备)中返回任何数据。
请注意,我的整个代码仅在客户端 if (Meteor.isClient) {} 上,而 if (Meteor.isCordova) {} 中没有任何内容。
原始问题:是否可以在 Cordova (Meteor 0.9.3) 中定义本地集合? 我的应用程序中有一个本地(仅限客户端)集合,如下所示: Items = new Meteor.Collection(null);
此本地集合临时从外部 API 获取数据(通过添加“meteor add http”并使用 HTTP.get() ),并将此内容推送到模板。这通过助手( return Items.find() )完美地出现在 localhost:3000 上的浏览器模板中,但是当我运行“meteor run ios”时,数据没有在 iOS 模拟器中加载。
首先,是否有可能期望本地集合在 Cordova 内工作? 是否应该在内部定义: Meteor.isCordova({ })? 是否需要添加 cordova 特定的包? 我认为在这种情况下,本地收集是必要的,因为数据是根据用户的设备位置检索的,并且仅与当前 session 相关。
如有任何想法,我们将不胜感激。
(这里是 meteor 菜鸟,抱歉,如果这听起来很愚蠢!)
编辑:在服务器和客户端上定义的集合可以在浏览器和 iOS 模拟器上运行。所以问题只出在本地集合上。
最佳答案
@imslavko
你确实是对的!这是我进行 API 调用的服务器上的 CORS 问题。
经过几天的绞尽脑汁,我最终发现服务器没有 Access-Control-Allow-Origin: * 用于简单的 GET/POST 请求。
感谢您帮助解决这个问题。
事实证明 Cordova 与此无关。所有 HTTP.get() 调用都可以在 Cordova 内完美运行,包括本地集合。
关于api - 为什么客户端 HTTP.get() 调用在 Cordova (Meteor 0.9.3) 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26089665/