unicloud 資料庫基礎操作
阿新 • • 發佈:2021-07-08
一、clientDB操作資料庫
1、查詢資料
//db.env.uid 當前使用者uid,依賴uni-id //db.env.now 伺服器時間戳 //db.env.clientIP 當前客戶端IP // 查詢當前使用者的資料 const db = uniCloud.database() let res = await db.collection('table') .where({ user_id: db.env.uid }) //如需一次查詢多條資料,可使用jql語法 .where( dbCmd.or({user_id:1},{user_id:2}) ) .get() //查詢列表分頁 const db = uniCloud.database() db.collection('book') .where('status == "onsale"') .skip(20) // 跳過前20條 .limit(20) // 獲取20條 .get({ getCount:true //如需查詢資料總條數 }) // 上述用法對應的分頁條件為:每頁20條取第2頁 //查詢並排序 const db = uniCloud.database() db.collection('order') .orderBy('quantity asc, create_date desc') // 按照quantity欄位升序排序,quantity相同時按照create_date降序排序.get()
2、插入資料
const db = uniCloud.database(); db.collection("user") .add({name: '張三'}) .then((res) => { uni.showToast({ title: '新增成功' }) }) .catch((err) => { uni.showToast({ title: '新增失敗' }) })
3、刪除資料
//刪除單條記錄 const db = uniCloud.database(); db.collection("table1").doc("5f79fdb337d16d0001899566").remove() //刪除該表所有資料 const db = uniCloud.database(); let collection = db.collection("table1") let res = await collection.get() res.data.map(async(document) => { return await collection.doc(document.id).remove(); }); //根據條件查詢刪除內容 const db = uniCloud.database(); db.collection("table1").where("a>2").remove().then((res) => { uni.showToast({ title: '刪除成功' }) console.log("刪除條數: ",res.deleted); })
4、更新資料
const db = uniCloud.database(); let collection = db.collection("table1") let res = await collection.where({_id:'doc-id'}) .update({ name: "Hey", }).then((res) => { uni.showToast({ title: '更新成功' }) })
5、樹形結構選單查詢(二級分類)
//DB Schema裡配置parentKey來表達父子關係,然後查詢時宣告使用Tree查詢,就可以直接查出樹形資料 "properties": { "_id": { "description": "ID,系統自動生成" }, "parent_id": { "bsonType": "string", "description": "父id", "parentKey": "_id", // 指定父子關係為:如果資料庫記錄A的_id和資料庫記錄B的parent_id相等,則A是B的父級。 }, } //查詢 db.collection("department").get({ getTree: {} })