在研究微信小程序读写云数据库时,多次碰壁,各种报错,经过一番折腾终于找到了完美解决方案!
1、创建一个小程序(非云开发)
2、打开app.js,在 onLaunch: function () { 后插入的代码
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
traceUser: true,
env:' /*这里填写云数据库指定的开发环境*/ ',
})
3、在自定义页面的js文件中Page{} 之外(顶端)引用数据库
const db = wx.cloud.database()//引用数据库.
// pages/dbop/dbop.js
Page({
/*数据库操作代码块*/
})
4、在自定义页面的js文件中Page{} 内部写入数据库操作代码
//---查询集合中所有行
dbget() {
db.collection('/*这里写表名(集合的名字)*/').get().then(res => {
console.log(res.data);
}).catch(res => {
console.log(res);
})
},
//---条件查询
dbgetw() {
db.collection('/*这里写表名(集合的名字)*/').where({_id/*关键字名*/:"/*关键字值*/"}).get().then(res => {
console.log(res.data);
}).catch(res => {
console.log(res);
})
},
//---新增一条数据
dbadd() {
db.collection('/*这里写表名(集合的名字)*/').add({
data: {
"key1": "value1",
"key2": "value2",
"keyn": "valuen",
},
success(res) {console.log(res)},
fail(res) {console.log(res)}
})
},
//---修改某一条数据的某一字段
dbup() {
db.collection('/*这里写表名(集合的名字)*/').doc('/*关键字值*/')
.update({
// 想要更新后的数据
data: {
"key": "value",
}
}).then(res => {
// 更新数据成功
console.log(res)
}).catch(err => {
// 更新数据失败
console.log(err)
})
},
//---条件删除一条数据
dbdel() {
db.collection('/*这里写表名(集合的名字)*/').where({ _id: "/*关键字值*/" }).remove().then(res => {
console.log(res);
}).catch(res => {
console.log(res);
})
}
5、关键环节:
对数据库进行操作时,有一个很重要的字段"_openid"
这个字段在控制台中新建一条数据时,不会被创建,但是用函数创建一条数据时会自动被创建。
他好像是保证成功操作云数据库的关键,所以在没有这项字段的行中加入此字段,可进行改和删的工作。
另外一定把云数据库权限设置成所有用户可读,仅创建者可读写。
6、疑问:在非云函数操作数据库时,只有创建者可更改和删除,那么由A用户创建的数据行,B用户无法修改和删除,权限设置也没有这个选项,要怎么办呢?有知道的大咖可否给个解决方案?《》《》《》继续研究。。。