Cloudkit JS && Node JS

В настоящее время я пытаюсь выполнить подключение на стороне сервера к серверу iCloud, используя новый CloudKit JS от Apple. Согласно WWDC 2015 «CloudKit JS и веб-сервис», поскольку CloudKit JS является чистой структурой JS, вы можете использовать ее во всех средах JS, таких как узел JS.

Я скопировал исходный код CloudKit JS из https://cdn.apple-cloudkit.com/ck/1/cloudkit.js и вставил его в файл с именем «cloudkit.js». Вот демонстрация того, что я пробовал:

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, кажется, правильно настроен, так как все функции правильно вызваны. Но обратный вызов executeQuery никогда не вызывается. Зачем ?

Есть ли кто-то, кто уже успел настроить CloudKit JS в среде сервера?

заранее спасибо

javascript,ios,node.js,cloudkit,cloudkit-web-services,

17

Ответов: 1


16 принят

В браузере CloudKit.js полагается на XmlHttpRequest для извлечения ресурсов, но поскольку CloudKit не является модулем npm, вам понадобится способ извлечения данных с вашего сервера.

npm install node-fetch

Используя node-fetch, вот теневая версия вашего кода, который регистрирует результирующие элементы в вашем запросе:

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 вы должны увидеть, что ваш сервер регистрирует ответ на ваш запрос.

JavaScript, Иос, Node.js, cloudkit, cloudkit-веб-сервисы,
Похожие вопросы