首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Cloudkit JS && Node JS

Cloudkit JS && Node JS
EN

Stack Overflow用户
提问于 2015-06-20 21:22:07
回答 1查看 4.3K关注 0票数 24

我目前正在尝试使用苹果新的CloudKit JS连接到iCloud服务器。根据WWDC2015 "CloudKit JS和Web Service",由于CloudKit JS是一个纯JS框架,您可以在所有JS环境中使用它,例如node JS。

我从https://cdn.apple-cloudkit.com/ck/1/cloudkit.js复制了CloudKit JS的源代码,并将其粘贴到一个名为"cloudkit.js“的文件中。这是我尝试过的一个演示:

代码语言:javascript
复制
var CloudKit = require("/some/folders/cloudkit.js")

function demoPerformQuery() {
  CloudKit.configure({
      containers: [{
    containerIdentifier: 'myContainerIdentifier',
    apiToken: 'myAPIToken',
    environment: 'development'
      }]
    })

  var container = CloudKit.getDefaultContainer();
  var publicDB = container.publicCloudDatabase;

  publicDB.performQuery({recordType: 'Items'}).then(function(response){
    // never called :-(
  })
}

var express = require('express')

var app = express()

app.get("/", function(){
  demoPerformQuery()
})

var server = app.listen(8080, function () {
  console.log("server launched")
})

CloudKit似乎设置正确,因为所有函数都被正确调用。但是performQuery的回调从未被调用过。为什么?

有没有人已经在服务器环境中成功配置了CloudKit JS?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 05:59:31

在浏览器中,CloudKit.js依赖XmlHttpRequest来获取资源,但是由于CloudKit不是一个npm模块,因此您需要一种从服务器获取资源的方法。

npm install node-fetch

使用node-fetch,下面是代码的调整版本,它记录了查询中的结果项:

代码语言:javascript
复制
var fetch = require('node-fetch');
var CloudKit = require("./cloudkit.js")

CloudKit.configure({
  services: {
    fetch: fetch
  },
  containers: [{
    containerIdentifier: 'yourContainerIdentifier',
    apiToken: 'yourAPItoken',
    environment: 'development'
  }]
})

var container = CloudKit.getDefaultContainer();
var publicDB = container.publicCloudDatabase;

function demoPerformQuery() {
  publicDB.performQuery({recordType: 'Items'}).then(function(response){
    console.log(response)
  }).catch(function(error){
    console.log(error)
  })
}

var express = require('express')
var app = express()

app.get("/", function() {
  demoPerformQuery()
})

var server = app.listen(8080, function () {
  console.log("Server listen")
})

在点击http://localhost:8080之后,您应该看到您的服务器记录了对查询的响应。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30954472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档