Cloudkit JS && 节点 JS
Cloudkit JS && Node JS
我目前正在尝试使用 Apple 的新 CloudKit JS 执行到 iCloud 服务器的服务器端连接。根据 WWDC 2015 "CloudKit JS and Web Service",由于 CloudKit JS 是纯 JS 框架,您可以在所有 JS 环境(例如 node JS)中使用它。
我从https://cdn.apple-cloudkit.com/ck/1/cloudkit.js复制了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 似乎设置正确,因为所有函数都被正确调用。但是永远不会调用 performQuery 的回调。为什么 ?
有没有人已经成功地在服务器环境中配置了CloudKit JS?
提前致谢
在浏览器中,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 后,您应该会看到您的服务器记录对您的查询的响应。
我目前正在尝试使用 Apple 的新 CloudKit JS 执行到 iCloud 服务器的服务器端连接。根据 WWDC 2015 "CloudKit JS and Web Service",由于 CloudKit JS 是纯 JS 框架,您可以在所有 JS 环境(例如 node JS)中使用它。
我从https://cdn.apple-cloudkit.com/ck/1/cloudkit.js复制了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 似乎设置正确,因为所有函数都被正确调用。但是永远不会调用 performQuery 的回调。为什么 ?
有没有人已经成功地在服务器环境中配置了CloudKit JS?
提前致谢
在浏览器中,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 后,您应该会看到您的服务器记录对您的查询的响应。