技術基礎 | 用JSON在抖音上發佈動態——使用Stargate便可輕鬆實現

Cassandra是世界上經受住最多實戰考驗的數據庫,經過其快速且易於使用的數據API,讓你的程序開發升級。html

本文將介紹什麼是Stargate以及Stargate的最新進展,若是您想快速瀏覽相關代碼和動手操做指南,不妨直接跳到本文的第四節,跟着咱們一塊兒在App上發佈動態、建立頻道並管理用戶吧。node


 

01 在Astra上使用Stargate

 

這對開發者來講真是個超棒的時刻。數據庫

 

咱們將不少的API和很棒的工具集成在了一塊兒,幫助你們構建不斷變化的全棧應用程序。若是你是一個開發者,你可能在用無模式(schemaless)數據存儲、無服務器(serverless)架構、JSON的各類API,以及GraphQL語言等技術。npm

 

不只如此,還有不少很是棒的框架(好比Jamstack,即JavaScript、APIs和Markup)和服務(好比Netlify)讓無服務器應用程序的部署變得更快。瀏覽器

 

如今,因爲Stargate在Astra上做爲官方數據API正式發行,Apache Cassandra首次成爲了這個應用棧的一部分。服務器

 

咱們構建的現代應用程序須要各類數據API,咱們將這些API都集成到了咱們的工具包中,它們會和原生的數據格式(JSON、REST、GraphQL等)協同工做。這些數據API須要支持無模式的JSON,與此同時還要提供速度和伸縮性。網絡

 

最重要的是,若是想要在咱們的項目中使用他們,咱們至多須要幾分鐘的時間而已。架構

 

DataStax將Stargate構建於Astra,這給做爲程序開發人員的咱們一個天然的數據API棧,它與Jamstack或你選擇的其它無服務器應用棧相容。app

 

Apache Cassandra助力於Netflix、Instagram、Yelp、iCloud以及其餘咱們每日都用的不少應用,而在Astra上的Stargate就是構建在這個基礎堅實的NoSQL數據引擎之上的。框架


 

02 Stargate究竟是什麼?

 

Stargate是一個開源的數據網關,它處於你的程序服務器和你的數據庫之間。Stargate將一個API平臺和數據請求協調代碼放到同一個開源項目中。

 

多個成功的應用程序公司(像是Netflix和Yelp)都構建了他們本身的數據網關,以幫助內部的程序開發人員用各類簡單的API開發App功能,同時無需瞭解底層的數據庫或把數據模式(schema)弄得一團糟。

 

DataStax將Stargate集成到Astra中,讓你一樣可以輕鬆訪問你的數據。

 

這對你來講意味着什麼?

  • 無需預先進行Documents的數據建模
  • 更少的須要維護的個性化代碼
  • 更多的時間用於建構你真正在乎的東西

有Stargate做爲去往Cassandra的不一樣flavor的協調數據請求的代理,你能夠按你所想使用你的數據——不管是經過無模式Document API使用JSON,抑或是經過能感知數據庫模式的GraphQL和RESTful API使用JSON。

 

爲了在實戰中看看這個,讓咱們來研究一下如何在一個抖音的克隆版App中使用JSON和Stargate的無模式Document API。由於若是Instagram和Snapchat都有了克隆抖音而來的功能,咱們也應該要有一個,不是嗎?


 

03 動手操做前的簡短說明

 

在不需數據建模的狀況下將JSON隨意丟入Apache Cassandra或從中隨意取出是頗有意思的事情。你真應該本身在Astra上動手試一下。你能夠在Astra上馬上獲得動手體驗,或者你也能夠看看咱們的示例程序庫,瞭解一下實戰中的無模式Cassandra。

 

咱們很高興和來自Netflix、黑莓、麥格理銀行、美國聯合服務汽車協會以及Yelp的衆多工程師一塊兒創造Stargate。他們很努力地在對這些API進行實戰考驗,並與在咱們一塊兒開發新的功能。

 

好了就是這些,讓咱們開始寫代碼吧!


 

04 在抖音上發佈動態

 

咱們打算用Astra上的Stargate提供的API來向抖音的克隆版App建立並上傳動態。在這個過程當中,咱們將會使用你能夠直接粘貼到你最新的Jamstack程序的代碼。

 

想要在你的應用程序中使用在Astra上的Stargate,首先請安裝並配置咱們的JavaScript SDK。你也許須要自行查詢一下如何在你的.env文件中存儲環境變量。

 

讓咱們先從一個基本的抖音動態開始——一個帶有簡短描述的視頻——就像是這樣:

const postData = {
 "postId": 0,
 "video": "https://i.imgur.com/FTBP02Y.mp4",
 "caption": "These ducks are cute",
 "timestamp": "2020-12-09T09:08:31.020Z",
 "likes": 0,
}

 

當你用一個node JS客戶端鏈接到在Astra上的Stargate以後,讓咱們一塊兒在咱們的App中建立一個新的collection,並將剛纔的視頻動態加入其中:

const postsCollection = astraClient.namespace("tikTokClone").collection("posts");
const post = await postsCollection.create(postData);

 

若是你以前用過Cassandra,你會知道這一步有多棒。看看咱們剛纔省略的步驟吧:無需數據建模、無需建立新表、無需配置代碼、無需分區鍵、無需聚類鍵……我想你已經明白個人意思了。

 

在Astra上的Stargate讓你僅用一行代碼就能向Apache Cassandra中添加數據。這種程度的便捷是以前的Cassandra不可能作到的。插入JSON數據,而後繼續下一步。

 

下一步,假設你想要找到全部和鴨子(ducks)相關的動態,你能夠這樣作:

// find all posts about ducks
const posts = await postsCollection.find({ caption: 
  { $in:  ["ducks"] } });

 

Duang~如今一個有關鴨子的頻道已經爲你的用戶找出來了。畢竟沒人不會喜歡一個專一於鴨鴨們的視頻頻道。

 

如今你的App看起來還不會和Twitter同樣,可是咱們能夠編輯一些內容。讓咱們看看如何編輯你的動態的簡短描述——或者是一個稍長的描述?這取決於你。

// update the post’s caption
const post = await postsCollection.update(post.documentId, {
 caption: "These ducks are MEGA cute",
});

 

上面的這些只是一個快速介紹,展現瞭如何在一個簡單地克隆抖音的App上調用一小部分的數據API。

 

想要知道所有的功能?用網頁瀏覽器搜索「Ania Kubow’s tutorial」查看來自Ania Kubow的視頻教程(適當配置網絡)。她展現瞭如何利用Netlify和這些功能來建構一個完整的React應用程序。


 

05 下一步是什麼?

 

想要查看更多使用Stargate的REST、Document以及GraphQL的API的例子,點擊這裏查看更多動手教程。看看這些教程,而且記得告訴咱們你的想法。

 

有新的App的主意?或者想要加入咱們的狂歡?你能夠加入到咱們的Stargate社區中。

 

咱們很期待看到你是如何改造你的克隆版的抖音,使它擁有更多值得炫耀的基於數據的功能。

 

或者你能夠自行建立其餘App的克隆版——咱們會很樂意將你的App克隆版放到咱們的示例程序庫,因此請經過DataStax活動小祕書與咱們取得聯繫。


 

06 還想要知道更多細節?

 

若是你看到這兒了,估計你是在找更多的代碼。

 

沒問題。

 

讓咱們展現一下如何建立node JS客戶端以及調用更多的數據API。對於初學者,讓咱們先看一下如何將你的客戶端鏈接到在Astra上的Stargate:

// npm install @astrajs/collections
const { createClient } = require("@astrajs/collections");

// create an Astra client
const astraClient = await createClient(
{  astraDatabaseId: process.env.ASTRA_DB_ID,
 astraDatabaseRegion: process.env.ASTRA_DB_REGION,
 username: process.env.ASTRA_DB_USERNAME,
 password: process.env.ASTRA_DB_PASSWORD,
});

 

這很是之容易。

 

而後讓咱們在咱們的數據庫中建立一個用戶collection,用它來儲存咱們的抖音用戶的documents。

// create the users collection in the app
const usersCollection = astraClient.namespace("tikTokClone").collection("users");

 

咱們的抖音App中的用戶會有一些基本信息:一個獨一無二的ID、一個名字、用戶名等等:

const userData = {
 "id_3": "0",
 "name": "Mo Farooq",
 "username": "mofarooq32",
 "avatar": "https://i.imgur.com/9KYq7VG.png"
};

 

而後讓咱們把這個用戶添加到咱們的collection中:

// create a new user
const user = await usersCollection.create(userData);

 

你能夠經過讀取這個用戶的任意特性(好比用戶名)來確保這個用戶已經被存儲在數據庫中了:

// find our user by username
const users = await usersCollection.find({ username: { $eq: 
  "mofarooq32" } });

 

或者你能夠根據用戶的documentId來查找任意用戶:

// get the user by document id
const user = await usersCollection.get(user.documentId);

 

最後,若是你想要刪除一個用戶:

// delete the user
const user = await usersCollection.delete(user.documentId);

 

想要查看完整代碼?用網頁瀏覽器搜索「Ania Kubow’s app」查看所有的代碼,並基於它改造你本身的版本。若是你真的這樣作了,記得讓咱們知道你的新動態,咱們很樂意訂閱你的鴨鴨頻道。

 

謝謝你讀完整篇文章。祝你敲代碼愉快!

相關文章
相關標籤/搜索