99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

云開(kāi)發(fā) 數(shù)據(jù)庫(kù) CRUD

2020-07-22 15:34 更新

上一節(jié)演示了云函數(shù)的基本 DEMO,但是比較簡(jiǎn)單,就直接返回了一個(gè)“好好學(xué)習(xí)” 的 JSON 對(duì)象。這一小節(jié)來(lái)熟悉數(shù)據(jù)庫(kù)。

云開(kāi)發(fā)提供了一個(gè) NoSQL 數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中的每條記錄都是一個(gè) JSON 格式的對(duì)象。一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)集合(相當(dāng)于關(guān)系型數(shù)據(jù)中的表),集合可看做一個(gè) JSON 數(shù)組,數(shù)組中的每個(gè)對(duì)象就是一條記錄。

一般我們稱(chēng)數(shù)據(jù)記錄的增加(Create)、讀取(Retrieve)、更新(Update)和刪除(Delete) 統(tǒng)稱(chēng)為 CRUD。下面,我們基于云函數(shù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。

創(chuàng)建數(shù)據(jù)庫(kù)集合(表)和創(chuàng)建一個(gè)云函數(shù)

第1步:創(chuàng)建一個(gè)數(shù)據(jù)集合,取名為 users

第2步:創(chuàng)建 4 個(gè)云函數(shù),分別取名為:

  • insert_db
  • query_db
  • update_db
  • delete_db

如下圖:

如果還不了解如何創(chuàng)建云函數(shù),可以查看上一篇「編寫(xiě)第一個(gè)云函數(shù)」

插入數(shù)據(jù)

點(diǎn)擊云函數(shù)列表中的 “insert_db” 函數(shù),進(jìn)入代碼編輯頁(yè)面。在編寫(xiě)代碼之前,我們需要安裝一個(gè) Node.js 模塊 tcb-admin-node , 該模塊提供了在云函數(shù)或者說(shuō)在Node.js 服務(wù)端器環(huán)境下,可以操作數(shù)據(jù)庫(kù)、云存儲(chǔ)等的一些方法/API。

創(chuàng)建 package.json 文件

因?yàn)樾枰?tcb-admin-node 模塊,所以先要?jiǎng)?chuàng)建 package.json 文件,可以按照如下圖片1,2,3,4進(jìn)行。最后記得點(diǎn)擊【保存并安裝依賴(lài)】。

package.json 文件內(nèi)容如下,可以復(fù)制進(jìn)去。

{
  "dependencies": {
    "tcb-admin-node": "*"
  }
}

編寫(xiě)代碼

第 1 步: 獲取該環(huán)境 ID
在控制臺(tái)左側(cè)邊欄點(diǎn)擊【環(huán)境】,點(diǎn)擊【環(huán)境縱覽】,復(fù)制環(huán)境 ID。后面代碼需要通過(guò)環(huán)境 ID,訪(fǎng)問(wèn)環(huán)境的資源,例如數(shù)據(jù)庫(kù)。

第 2 步: 編寫(xiě)代碼
往 index.js 文件中編寫(xiě)如下代碼,并點(diǎn)擊【保存并安裝依賴(lài)】,代碼如下:

'use strict';
const tcb = require('tcb-admin-node')
const app = tcb.init({
  env: '你的環(huán)境 ID'
})


const db = app.database()


exports.main = async (event, context) => {
    let result = await db.collection('users').add({
        name:  'test',
        age: 25,
        create_time: new Date()
    })
    return result
}

下面分析代碼:

  • const tcb = require('tcb-admin-node') 引入云開(kāi)發(fā) Node.js SDK;
  • const app = tcb.init({}) 初始化環(huán)境;
  • app.database() 獲取數(shù)據(jù)的引用;
  • db.collection('users') 其中 users 是 6.1 節(jié)中創(chuàng)建的數(shù)據(jù)庫(kù)集合,或者說(shuō)“表”,這里獲取集合的引用;
  • add({}) 方法,輸入?yún)?shù)為 JSON 對(duì)象,這里是一個(gè) user 記錄;
  • asyncawait JavaSript API,可以將異步轉(zhuǎn)成同步操作;

第 3 步:開(kāi)啟 HTTP 觸發(fā)和路徑配置
整個(gè)配置過(guò)程可以參見(jiàn)上一篇 「編寫(xiě)第一個(gè)云函數(shù)」 。配置一個(gè)觸發(fā)路徑,如下圖:

第 4 步:訪(fǎng)問(wèn) HTTP 并驗(yàn)證數(shù)據(jù)是否插入
點(diǎn)擊鏈接,瀏覽器打開(kāi)訪(fǎng)問(wèn)一次,就插入一次數(shù)據(jù)。我們點(diǎn)擊左側(cè)邊欄【數(shù)據(jù)庫(kù)】,再點(diǎn)擊數(shù)據(jù)庫(kù)【users】,即可看到如下數(shù)據(jù):

多請(qǐng)求幾次數(shù)據(jù)庫(kù)就會(huì)出現(xiàn)多幾條數(shù)據(jù)。

查詢(xún)數(shù)據(jù)

這里,我們使用一開(kāi)始創(chuàng)建的 query_db 云函數(shù)。當(dāng)然你可以繼續(xù)使用 insert_db 函數(shù)。如果不是使用上面的函數(shù),這里我們同樣需要做以下幾件事:

  • 創(chuàng)建 package.json 并且填寫(xiě) package.json 內(nèi)容,見(jiàn) 6.2.1 節(jié);
  • 使用【保存并安裝依賴(lài)】按鈕;
  • 需要復(fù)制環(huán)境 ID;
  • 需要配置云函數(shù) HTTP 觸發(fā)路徑, 例如 /query_db

查詢(xún)的代碼具體如下所示:

'use strict';
const tcb = require('tcb-admin-node')
//初始化環(huán)境
const app = tcb.init({
  env: '你的環(huán)境 ID'
})


//獲取數(shù)據(jù)引用
const db = app.database()


exports.main = async (event, context) => {
    //使用 where 方法查詢(xún) name 為 test 數(shù)據(jù)
    //鏈?zhǔn)秸{(diào)用 get 方法,執(zhí)行查詢(xún)過(guò)程并返回?cái)?shù)據(jù)
    let result = await db.collection('users').where({
        name:  'test'
    })
    .get() 
    //獲取返回的數(shù)據(jù)結(jié)果
    return result.data
}      

訪(fǎng)問(wèn)配置的 HTTP 觸發(fā)路徑,即可查詢(xún)之前插入的數(shù)據(jù),上面的插入請(qǐng)求了 3 次,所以數(shù)據(jù)返回的 3 條。

[
  {
  "_id": "5e847ab25ebfe17b0112ef031602897d",
  "age": 25,
  "create_time": "2020-05-16T12:50:03.492Z",
  "name": "test"
  },
  {
  "_id": "e2297d935ebfe86b00bcb9cb6e7c7f1a",
  "age": 25,
  "create_time": "2020-05-16T13:19:39.931Z",
  "name": "test"
  },
  {
  "_id": "a9bfcffc5ebfe88700b26c896baeac9f",
  "age": 25,
  "create_time": "2020-05-16T13:20:07.279Z",
  "name": "test"
  }
] 

如果需要返回兩條數(shù)據(jù),可以使用 limit(2) ,返回 N 條,就 limit(N) 例如:

let result = await db.collection('users').where({ name: 'test'})
    .limt(2)
    .get() 

更新數(shù)據(jù)

同樣,如果是使用新創(chuàng)建的云函數(shù),需要做以下幾件事:

  • 創(chuàng)建 package.json 并且填寫(xiě) package.json 內(nèi)容,見(jiàn) 6.2.1 節(jié);
  • 使用【保存并安裝依賴(lài)】按鈕;
  • 需要復(fù)制環(huán)境 ID;
  • 需要配置云函數(shù) HTTP 觸發(fā)路徑, 例如 /update_db

這里我想更新所有符合要求的記錄的 age 值,全部更新為 88 歲,代碼如下:

'use strict';
const tcb = require('tcb-admin-node')
//初始化環(huán)境
const app = tcb.init({
  env: '你的環(huán)境 ID'
})


//獲取數(shù)據(jù)引用
const db = app.database()


exports.main = async (event, context) => {
    //使用 where 方法查詢(xún) name 為 test 數(shù)據(jù)
    //將符合要求的數(shù)據(jù)的 age 字段值更新為 88
    let result = await db.collection('users').where({
        name:  'test'
    }).update({
        age: 88
    })
    return result
}

同樣請(qǐng)求 HTTP 服務(wù),完成更新操作,瀏覽器返回?cái)?shù)據(jù)如下,說(shuō)明符合要求的 3 條數(shù)據(jù)均已更新。

{
  "requestId": "1589636820392_1_01781",
  "updated": 3
}

update 方法是局部更新,用于更新字段;如果替換某條記錄,可以使用 set 方法,具體見(jiàn) 數(shù)據(jù)庫(kù)替換更新

刪除數(shù)據(jù)

同樣,如果是使用新創(chuàng)建的云函數(shù),需要做以下幾件事:

  • 創(chuàng)建 package.json 并且填寫(xiě) package.json 內(nèi)容,見(jiàn) 6.2.1 節(jié);
  • 使用【保存并安裝依賴(lài)】按鈕;
  • 需要復(fù)制環(huán)境 ID;
  • 需要配置云函數(shù) HTTP 觸發(fā)路徑, 例如 /delete_db

'use strict';
const tcb = require('tcb-admin-node')
//初始化環(huán)境
const app = tcb.init({
  env: 'serverless-1d83e7'
})


//獲取數(shù)據(jù)引用
const db = app.database()


exports.main = async (event, context) => {
    //使用 where 方法查詢(xún) name 為 test 數(shù)據(jù)
    //remove 刪除符合條件的所有數(shù)據(jù)
    let result = await db.collection('users').where({
        name:  'test'
    }).remove()
    return result
}

通過(guò) HTTP 觸發(fā)云函數(shù),瀏覽器返回 3 條數(shù)據(jù)被刪除:

{
  "requestId": "1589637228874_1_51061",
  "deleted": 3
}

通過(guò) where 方法可以刪除符合條件的所有數(shù)據(jù),如果只想刪除指定 _id 字段的 1 條數(shù)據(jù),可以參見(jiàn) 刪除一條記錄

附錄

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)