Speak now
Please Wait Image Converting Into Text...
Embark on a journey of knowledge! Take the quiz and earn valuable credits.
Challenge yourself and boost your learning! Start the quiz now to earn credits.
Unlock your potential! Begin the quiz, answer questions, and accumulate credits along the way.
General Tech Bugs & Fixes 2 years ago
Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.
Turn Your Knowledge into Earnings.
I'm currently trying to perform server side connection to iCloud Server using the new CloudKit JS from Apple. According to the WWDC 2015 "CloudKit JS and Web Service", since CloudKit JS is a pure JS framework, you can use it in all JS environnements such as node JS.
I copied the source code of CloudKit JS from https://cdn.apple-cloudkit.com/ck/1/cloudkit.js and pasted it in a file named "cloudkit.js". Here is a demo of what I tried :
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 seems to be correctly set up since all the functions are correctly called. But the callback of performQuery is never called. Why ?
Is there someone who already succeed to configure CloudKit JS in an server environnement ?
In the browser, CloudKit.js relies on XmlHttpRequest in order to fetch resources, but since CloudKit isn't an npm module you'll need a way to fetch things from your server.
npm install node-fetch
Using node-fetch, here is a tweaked version of your code that logs the resulting Items in your query:
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") })
No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.
General Tech 10 Answers
General Tech 7 Answers
General Tech 3 Answers
General Tech 9 Answers
General Tech 2 Answers
Ready to take your education and career to the next level? Register today and join our growing community of learners and professionals.