Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
德宏大魔王
uni-starter
提交
14d1d150
U
uni-starter
项目概览
德宏大魔王
/
uni-starter
与 Fork 源项目一致
Fork自
DCloud / uni-starter
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-starter
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
14d1d150
编写于
4月 13, 2021
作者:
L
linju
浏览文件
操作
浏览文件
下载
差异文件
2
上级
a67f4778
80eec09b
变更
24
显示空白变更内容
内联
并排
Showing
24 changed file
with
1284 addition
and
1441 deletion
+1284
-1441
manifest.json
manifest.json
+8
-7
pages/ucenter/edit/edit.nvue
pages/ucenter/edit/edit.nvue
+5
-2
uniCloud-aliyun/database/opendb-app-versions.schema.json
uniCloud-aliyun/database/opendb-app-versions.schema.json
+123
-123
uniCloud-aliyun/database/opendb-banner.schema.json
uniCloud-aliyun/database/opendb-banner.schema.json
+53
-53
uniCloud-aliyun/database/opendb-mall-goods.schema.json
uniCloud-aliyun/database/opendb-mall-goods.schema.json
+122
-122
uniCloud-aliyun/database/opendb-news-articles-detail.schema.json
...d-aliyun/database/opendb-news-articles-detail.schema.json
+122
-0
uniCloud-aliyun/database/opendb-news-articles.schema.json
uniCloud-aliyun/database/opendb-news-articles.schema.json
+174
-174
uniCloud-aliyun/database/opendb-news-categories.schema.json
uniCloud-aliyun/database/opendb-news-categories.schema.json
+49
-49
uniCloud-aliyun/database/opendb-news-comments.schema.json
uniCloud-aliyun/database/opendb-news-comments.schema.json
+67
-67
uniCloud-aliyun/database/opendb-news-favorite.schema.json
uniCloud-aliyun/database/opendb-news-favorite.schema.json
+34
-34
uniCloud-aliyun/database/opendb-search-hot.schema.json
uniCloud-aliyun/database/opendb-search-hot.schema.json
+26
-26
uniCloud-aliyun/database/opendb-search-log.schema.json
uniCloud-aliyun/database/opendb-search-log.schema.json
+30
-30
uniCloud-aliyun/database/opendb-verify-codes.schema.json
uniCloud-aliyun/database/opendb-verify-codes.schema.json
+44
-44
uniCloud-aliyun/database/uni-id-log.schema.json
uniCloud-aliyun/database/uni-id-log.schema.json
+40
-40
uniCloud-aliyun/database/uni-id-users.schema.json
uniCloud-aliyun/database/uni-id-users.schema.json
+268
-268
uni_modules/opendb-feedback/components/feedback-imgs.vue
uni_modules/opendb-feedback/components/feedback-imgs.vue
+1
-1
uni_modules/opendb-feedback/pages/opendb-feedback/add.vue
uni_modules/opendb-feedback/pages/opendb-feedback/add.vue
+2
-2
uni_modules/opendb-feedback/uniCloud/database/opendb-feedback.schema.json
...db-feedback/uniCloud/database/opendb-feedback.schema.json
+65
-54
uni_modules/uni-clientDB/db_init.json
uni_modules/uni-clientDB/db_init.json
+0
-0
uni_modules/uni-clientDB/license.md
uni_modules/uni-clientDB/license.md
+0
-30
uni_modules/uni-clientDB/package.json
uni_modules/uni-clientDB/package.json
+0
-16
uni_modules/uni-clientDB/pages.json
uni_modules/uni-clientDB/pages.json
+0
-0
uni_modules/uni-clientDB/readme.md
uni_modules/uni-clientDB/readme.md
+0
-248
uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
.../uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
+51
-51
未找到文件。
manifest.json
浏览文件 @
14d1d150
{
{
"name"
:
"base-app"
,
"name"
:
"base-app"
,
"appid"
:
"__UNI__
BC54A00
"
,
"appid"
:
"__UNI__
03B096E
"
,
"description"
:
""
,
"description"
:
""
,
"versionName"
:
"1.0.0"
,
"versionName"
:
"1.0.0"
,
"versionCode"
:
"100"
,
"versionCode"
:
"100"
,
...
@@ -64,7 +64,8 @@
...
@@ -64,7 +64,8 @@
"entitlements"
:
{
"entitlements"
:
{
"com.apple.developer.associated-domains"
:
[
"com.apple.developer.associated-domains"
:
[
"applinks:uniapp.dcloud.io"
,
"applinks:uniapp.dcloud.io"
,
"applinks:static-7827e38b-7f40-4421-bca7-58331dcddc00.bspapp.com"
"applinks:static-7827e38b-7f40-4421-bca7-58331dcddc00.bspapp.com"
,
"applinks:static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com"
]
]
}
}
},
},
...
@@ -78,20 +79,20 @@
...
@@ -78,20 +79,20 @@
"weixin"
:
{
"weixin"
:
{
"appid"
:
"wx0411fa6a39d61297"
,
"appid"
:
"wx0411fa6a39d61297"
,
"appsecret"
:
""
,
"appsecret"
:
""
,
"UniversalLinks"
:
"https://static-7
827e38b-7f40-4421-bca7-58331dcddc00.bspapp.com/uni-universallinks/__UNI__BC54A00
"
"UniversalLinks"
:
"https://static-7
6ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E
"
},
},
"univerify"
:
{}
"univerify"
:
{}
},
},
"share"
:
{
"share"
:
{
"weixin"
:
{
"weixin"
:
{
"appid"
:
"wx0411fa6a39d61297"
,
"appid"
:
"wx0411fa6a39d61297"
,
"UniversalLinks"
:
"https://static-7
827e38b-7f40-4421-bca7-58331dcddc00.bspapp.com/uni-universallinks/__UNI__BC54A00
"
,
"UniversalLinks"
:
"https://static-7
6ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E
"
,
"_spaceID"
:
"7
827e38b-7f40-4421-bca7-58331dcddc00
"
"_spaceID"
:
"7
6ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e
"
}
}
},
},
"payment"
:
{
"payment"
:
{
"weixin"
:
{
"weixin"
:
{
"UniversalLinks"
:
"https://static-7
827e38b-7f40-4421-bca7-58331dcddc00.bspapp.com/uni-universallinks/__UNI__BC54A00
"
"UniversalLinks"
:
"https://static-7
6ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E
"
}
}
},
},
"ad"
:
{}
"ad"
:
{}
...
@@ -100,7 +101,7 @@
...
@@ -100,7 +101,7 @@
},
},
"quickapp"
:
{},
"quickapp"
:
{},
"mp-weixin"
:
{
"mp-weixin"
:
{
"appid"
:
""
,
"appid"
:
"
wx999bf02c8e05dfc9
"
,
"setting"
:
{
"setting"
:
{
"urlCheck"
:
false
"urlCheck"
:
false
},
},
...
...
pages/ucenter/edit/edit.nvue
浏览文件 @
14d1d150
...
@@ -50,11 +50,12 @@
...
@@ -50,11 +50,12 @@
this.uploadUserInfo({avatar:url});
this.uploadUserInfo({avatar:url});
})
})
let options = {
let options = {
width:
uni.upx2px(700)
,
width:
600
,
height:
uni.upx2px(700)
height:
600
}
}
uni.navigateTo({
uni.navigateTo({
url:'./uploadCutImageToUnicloud?path=' + res.tempFilePaths[0] + `&options=${JSON.stringify(options)}`,
url:'./uploadCutImageToUnicloud?path=' + res.tempFilePaths[0] + `&options=${JSON.stringify(options)}`,
animationType:"fade-in"
});
});
}
}
})
})
...
@@ -65,9 +66,11 @@
...
@@ -65,9 +66,11 @@
* value 更新后的用户字段值
* value 更新后的用户字段值
*/
*/
uploadUserInfo(data){
uploadUserInfo(data){
console.log(this.userInfo._id)
userTable.doc(this.userInfo._id)
userTable.doc(this.userInfo._id)
.update(data)
.update(data)
.then(res=>{
.then(res=>{
console.log(data)
this.login(data)
this.login(data)
})
})
.catch(err=>{
.catch(err=>{
...
...
uniCloud-aliyun/database/opendb-app-versions.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-banner.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-mall-goods.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-news-articles-detail.schema.json
0 → 100644
浏览文件 @
14d1d150
{
"bsonType"
:
"object"
,
"permission"
:
{
"create"
:
"auth.uid != null"
,
"delete"
:
"doc.uid == auth.uid"
,
"read"
:
true
,
"update"
:
"doc.uid == auth.uid"
},
"properties"
:
{
"_id"
:
{
"description"
:
"存储文档 ID(用户 ID),系统自动生成"
},
"article_status"
:
{
"bsonType"
:
"int"
,
"description"
:
"文章状态:0 草稿箱 1 已发布"
,
"maximum"
:
1
,
"minimum"
:
0
},
"avatar"
:
{
"bsonType"
:
"string"
,
"description"
:
"缩略图地址"
,
"label"
:
"封面大图"
},
"category_id"
:
{
"bsonType"
:
"string"
,
"description"
:
"分类 id,参考`uni-news-categories`表"
},
"comment_count"
:
{
"bsonType"
:
"int"
,
"description"
:
"评论数量"
,
"permission"
:
{
"write"
:
false
}
},
"comment_status"
:
{
"bsonType"
:
"int"
,
"description"
:
"评论状态:0 关闭 1 开放"
,
"maximum"
:
1
,
"minimum"
:
0
},
"content"
:
{
"bsonType"
:
"string"
,
"description"
:
"文章内容"
,
"label"
:
"文章内容"
},
"excerpt"
:
{
"bsonType"
:
"string"
,
"description"
:
"文章摘录"
,
"label"
:
"摘要"
},
"is_essence"
:
{
"bsonType"
:
"bool"
,
"description"
:
"阅读加精"
,
"permission"
:
{
"write"
:
false
}
},
"is_sticky"
:
{
"bsonType"
:
"bool"
,
"description"
:
"是否置顶"
,
"permission"
:
{
"write"
:
false
}
},
"last_comment_user_id"
:
{
"bsonType"
:
"string"
,
"description"
:
"最后回复用户 id,参考`uni-id-users` 表"
},
"last_modify_date"
:
{
"bsonType"
:
"timestamp"
,
"description"
:
"最后修改时间"
},
"last_modify_ip"
:
{
"bsonType"
:
"string"
,
"description"
:
"最后修改时 IP 地址"
},
"like_count"
:
{
"bsonType"
:
"int"
,
"description"
:
"喜欢数、点赞数"
,
"permission"
:
{
"write"
:
false
}
},
"mode"
:
{
"bsonType"
:
"number"
,
"description"
:
"排版显示模式"
},
"publish_date"
:
{
"bsonType"
:
"timestamp"
,
"defaultValue"
:
{
"$env"
:
"now"
},
"description"
:
"发表时间"
},
"publish_ip"
:
{
"bsonType"
:
"string"
,
"description"
:
"发表时 IP 地址"
,
"forceDefaultValue"
:
{
"$env"
:
"clientIP"
}
},
"title"
:
{
"bsonType"
:
"string"
,
"description"
:
"标题"
,
"label"
:
"标题"
},
"user_id"
:
{
"bsonType"
:
"string"
,
"description"
:
"文章作者ID, 参考`uni-id-users` 表"
},
"view_count"
:
{
"bsonType"
:
"int"
,
"description"
:
"阅读数量"
,
"permission"
:
{
"write"
:
false
}
}
},
"required"
:
[
"user_id"
,
"title"
,
"content"
,
"article_status"
,
"view_count"
,
"like_count"
,
"is_sticky"
,
"is_essence"
,
"comment_status"
,
"comment_count"
,
"mode"
]
}
uniCloud-aliyun/database/opendb-news-articles.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-news-categories.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-news-comments.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-news-favorite.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-search-hot.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-search-log.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/opendb-verify-codes.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/uni-id-log.schema.json
浏览文件 @
14d1d150
uniCloud-aliyun/database/uni-id-users.schema.json
浏览文件 @
14d1d150
{
{
"bsonType"
:
"object"
,
"bsonType"
:
"object"
,
"permission"
:
{
"permission"
:
{
"read"
:
"'read' in auth.permission"
,
"read"
:
true
,
"create"
:
false
,
"create"
:
false
,
"update"
:
"doc._id == auth.uid"
,
"update"
:
"doc._id == auth.uid"
,
"delete"
:
false
"delete"
:
false
...
...
uni_modules/opendb-feedback/components/feedback-imgs.vue
浏览文件 @
14d1d150
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
isChoose
:{
isChoose
:{
type
:
Boolean
,
type
:
Boolean
,
default
:
false
default
:
false
}
}
,
},
},
methods
:{
methods
:{
/**
/**
...
...
uni_modules/opendb-feedback/pages/opendb-feedback/add.vue
浏览文件 @
14d1d150
...
@@ -123,13 +123,13 @@
...
@@ -123,13 +123,13 @@
db
.
collection
(
dbCollectionName
).
add
(
value
).
then
((
res
)
=>
{
db
.
collection
(
dbCollectionName
).
add
(
value
).
then
((
res
)
=>
{
uni
.
showToast
({
uni
.
showToast
({
icon
:
'
none
'
,
icon
:
'
none
'
,
title
:
'
新增
成功
'
title
:
'
反馈
成功
'
})
})
this
.
getOpenerEventChannel
().
emit
(
'
refreshData
'
)
this
.
getOpenerEventChannel
().
emit
(
'
refreshData
'
)
setTimeout
(()
=>
uni
.
navigateBack
(),
500
)
setTimeout
(()
=>
uni
.
navigateBack
(),
500
)
}).
catch
((
err
)
=>
{
}).
catch
((
err
)
=>
{
uni
.
showModal
({
uni
.
showModal
({
content
:
err
.
message
||
'
请求服务
失败
'
,
content
:
err
.
message
||
'
反馈
失败
'
,
showCancel
:
false
showCancel
:
false
})
})
}).
finally
(()
=>
{
}).
finally
(()
=>
{
...
...
uni_modules/opendb-feedback/uniCloud/database/opendb-feedback.schema.json
浏览文件 @
14d1d150
...
@@ -12,16 +12,27 @@
...
@@ -12,16 +12,27 @@
},
},
"user_id"
:
{
"user_id"
:
{
"bsonType"
:
"string"
,
"bsonType"
:
"string"
,
"description"
:
"留言反馈用户ID/回复留言用户ID,参考uni-id-users表"
,
"description"
:
"留言反馈用户ID
\/
回复留言用户ID,参考uni-id-users表"
,
"foreignKey"
:
"uni-id-users._id"
"foreignKey"
:
"uni-id-users._id"
,
"forceDefaultValue"
:
{
"$env"
:
"uid"
}
},
"ip"
:
{
"forceDefaultValue"
:
{
"$env"
:
"clientIP"
}
},
},
"create_date"
:
{
"create_date"
:
{
"bsonType"
:
"timestamp"
,
"bsonType"
:
"timestamp"
,
"description"
:
"留言时间/回复留言时间"
"description"
:
"留言时间
\/
回复留言时间"
,
"forceDefaultValue"
:
{
"$env"
:
"now"
}
},
},
"content"
:
{
"content"
:
{
"bsonType"
:
"string"
,
"bsonType"
:
"string"
,
"description"
:
"留言内容/回复内容"
,
"description"
:
"留言内容
\/
回复内容"
,
"trim"
:
"right"
"trim"
:
"right"
},
},
"imgs"
:
{
"imgs"
:
{
...
...
uni_modules/uni-clientDB/db_init.json
已删除
100644 → 0
浏览文件 @
a67f4778
uni_modules/uni-clientDB/license.md
已删除
100644 → 0
浏览文件 @
a67f4778
# clientDB使用许可协议
本协议是数字天堂(北京)网络技术有限公司(以下称“DCloud”)与您之间达成的关于clientDB框架(以下简称本框架)的协议。
本协议签订地点为中华人民共和国北京市海淀区。
您使用本框架即视为您已阅读并同意受本协议的约束。
## 知识产权及使用授权
您可以自由下载、使用、复制本框架而不需要向DCloud付费。
DCloud所拥有的知识产权,包括但不限于商标、专利、著作权、商业秘密、专有数据、源码,并不发生转移或共享。
您使用本框架开发的代码及输出物,包括但不限于网站、移动应用,其知识产权归属您所有。
本框架未包含第三方软件或技术,不涉及额外遵循第三方软件的授权协议问题。
## 您的义务
您不得破解、反编译、逆向工程本框架,不得破解或劫持本框架网络请求,不得对DCloud服务进行网络攻击,不得利用DCloud系统漏洞谋利或侵害DCloud利益,不得替换、删改本框架自带的非用户自定义文件。
未经书面许可您不可利用DCloud产品的全部或部分文件、模块、组件来制作与DCloud争夺用户的产品(通过DCloud插件市场服务开发者不属于此范围)。
如果您违反您的义务,DCloud将有权停止您使用本框架,造成的损失由您自行承担。
如果您给DCloud造成重大损失,或者在接收到DCloud的停止违约通知后拒不改正,DCloud将有权停止对您的DCloud所有产品和服务的使用授权,冻结您在DCloud所有产品服务中的预付款项和应收款项,因此造成的损失由您自行承担。
如果您的行为产生法律问题,DCloud有权追责您的法律责任。
## 隐私条款
本框架未进行任何数据采集、发送等涉及数据隐私的行为。
## 安全
您理解并同意,本框架同其他软件一样,无法承诺绝对的安全性。
当DCloud发现本框架的任何安全漏洞时,将及时在
[
社区
](
https://ask.dcloud.net.cn/explore/
)
发送公告,并将及时发布紧急更新补丁和升级推送通知。
## 免责声明
DCloud不因开发者使用本框架而承担任何法律责任。
## 协议修订
根据发展,DCloud可能会对本协议进行修改。修改时,DCloud会在产品或者网页中显著的位置发布相关信息以便及时通知到用户。如果您选择继续使用本框架,即表示您同意接受这些修改。
uni_modules/uni-clientDB/package.json
已删除
100644 → 0
浏览文件 @
a67f4778
{
"id"
:
"unicloud-db"
,
//
必选
插件标识,需要保证唯一性
"name"
:
"unicloud-db"
,
//
必选
插件名称
"version"
:
"1.0.8"
,
//
必选
插件版本
"description"
:
"写法更灵活的客户端访问云端数据方案"
,
//
插件描述
"author"
:
"DCloud"
,
//
插件作者
"license"
:
"MIT"
,
"homepage"
:
"https://ext.dcloud.net.cn/plugin?id=2314"
,
//
插件地址
"files"
:
[
//
必选
插件自身文件列表(支持通配,规范:https://docs.npmjs.com/files/package.json#files)
],
"bundledFiles"
:
[
//
插件依赖的文件列表,通常是依赖的三方插件的
files
合并
"cloudfunctions/unicloud-db"
,
"cloudfunctions/common/uni-id"
,
"js_sdk"
]
}
uni_modules/uni-clientDB/pages.json
已删除
100644 → 0
浏览文件 @
a67f4778
uni_modules/uni-clientDB/readme.md
已删除
100644 → 0
浏览文件 @
a67f4778
## 简介
每个查询业务,都要写一个云函数,很麻烦,也占用云函数的总数量。
本插件提供了一个通用的数据库查询云函数,由前端向云函数传递要查询的条件,比如查询哪个表、查询哪些字段、where条件和排序是什么。
> 举例:在前端的list.vue列表页面,可以调用本云函数,传入列表查询条件。然后写content.vue详情页面时,无需再新建一个云函数,可以直接在content.vue页面继续调用相同的本云函数,传入详情的查询条件。
客户端的查询条件语法,与云函数里查询数据库的语法是相同的。
[
查询api手册
](
https://uniapp.dcloud.io/uniCloud/cf-database?id=%e6%9f%a5%e8%af%a2%e6%96%87%e6%a1%a3
)
与某些小程序云的客户端直接操作数据库不同,本方案有2个明显优势:
-
安全:查询权限是在云函数里控制台的,能查什么表、什么字段,在云端控制。如果全部放在前端,由于前端的不可信任,相当于无法控制权限了。而某些小程序云提供的客户端权限,并不可编程,无法满足开发者的实际业务权限需求
-
包体积:某些小程序云的客户端操作数据库是一个数M大小的js sdk,如果迁移到H5和App,对应用的启动速度、性能、体积影响非常大
综上,本插件的优势在于:
1.
提高开发效率
2.
减少云函数数量
3.
安全,可控制权限
4.
性能好
本项目包括云函数和客户端两部分,需要搭配使用,具体请参考下面文档。
**示例项目使用须知**
1.
下载示例项目后选择服务空间
2.
在db_init.json上右键初始化数据库
3.
上传公共模块及云函数,公共模块用法参考
[
使用公共模块
](
https://uniapp.dcloud.net.cn/uniCloud/cf-common
)
4.
运行项目即可
示例项目文件介绍:
<pre
v-pre=
""
data-lang=
""
>
<code
class=
"lang-"
style=
"padding:0"
>
┌─cloudfunctions 云函数
│ ├─common 公共模块
| │ └─uni-curd 数据库查询通用公共模块
| ├─unicloud-db 在云函数中控制权限,并调用uni-curd完成查询
| └─db_init.json 初始化数据库
├─js_sdk 前端公共js目录
| └─unicloud-db 前端的js库,封装了查询语法
├─pages 业务页面文件存放的目录
│ ├─index
│ │ └─index.vue index示例页面
├─main.js Vue初始化入口文件
├─App.vue 应用配置,用来配置App全局样式以及监听
<a
href=
"/frame?id=应用生命周期"
>
应用生命周期
</a>
├─manifest.json 配置应用名称、appid、logo、版本等打包信息,
<a
href=
"/collocation/manifest"
>
详见
</a>
└─pages.json 配置页面路由、导航条、选项卡等页面类信息,
<a
href=
"/collocation/pages"
>
详见
</a>
</code>
</pre>
-
云函数里包括一个公共模块
`uni-curd`
和一个云函数
`unicloud-db`
-
前端包括一个js sdk
`unicloud-db`
,然后就是index.vue里的示例调用
-
index示例页面,里面包含两个示例一个简单查询一个分页查询
## 客户端公共模块
客户端js-sdk主要负责组装查询逻辑
**示例代码**
```
js
// 引入公共模块
import
db
from
'
@/js_sdk/unicloud-db/index.js
'
const
dbCmd
=
db
.
command
// 使用unicloud-db
uniCloud
.
callFunction
({
name
:
'
unicloud-db
'
,
data
:
{
command
:
db
.
collection
(
'
list
'
).
where
({
name
:
new
RegExp
(
'
龚
'
,
'
g
'
),
time
:
dbCmd
.
gt
(
1105885393581
)
}).
field
({
extra
:
false
}).
get
()
},
success
(
res
)
{
// ...
},
fail
(
err
)
{
// ...
}
})
```
**使用说明**
语法与云函数写查询数据库一致,目前有以下限制:
-
不可使用db.serverDate、db.Geo、db.RegExp
-
上传时会对query进行序列化,除Date类型、RegExp之外的所有不可序列化的参数类型均不支持(例如:undefined)
-
为方便控制禁止前端使用set方法,一般情况下也不需要前端使用set
## 云函数公共模块
云函数公共模块
`uni-curd`
主要负责解析客户端查询逻辑,对客户端行为做简单的限制
**使用示例**
```
js
'
use strict
'
;
const
uniCurd
=
require
(
'
uni-curd
'
)
const
db
=
uniCloud
.
database
()
const
dbCmd
=
db
.
command
exports
.
main
=
async
(
event
,
context
)
=>
{
// 这里可以判断用户身份给予不同权限,例如:可以从event里拿到uni-id的token,根据token和客户端参数决定查询权限限制
try
{
const
res
=
await
uniCurd
({
command
:
event
.
command
,
pagination
:
event
.
pagination
,
rules
:
{
list
:
{
// 数据表名
// CRUD权限
create
:
false
,
read
:
true
,
update
:
false
,
delete
:
false
,
// 是否允许使用聚合
aggregate
:
false
,
// 是否允许使用联表查询,联表查询时blockedField不会对被连接的数据表生效
lookup
:
false
,
// 使用聚合时blockField不会覆盖客户端的project,而是在聚合第一阶段插入project,不使用聚合时会在最后阶段插入一个field(会覆盖客户端的field方法)
blockedField
:
[
'
extra
'
],
// 不使用聚合时mixinCondition会在没有where的时候在collection方法之后插入where,有where时会跟where条件进行合并,取原条件且mixinCondition。使用聚合时会在第一阶段插入match使用混入的条件,如果有blockedField会插入在blockedField对应的project之前
mixinCondition
:
{
time
:
dbCmd
.
gt
(
1000000000000
)
},
// 更多用法请参考下方参数说明文档
}
}
})
return
res
}
catch
(
e
)
{
return
{
code
:
10001
,
msg
:
e
.
message
}
}
};
```
**参数说明**
|参数名 |类型 |是否必填 |默认值 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|command |Object |是 |- |客户端上传的查询条件 |
|pagination |Object |否 |- |如需分页,请在此字段内配置 |
|rules |Object |是 |- |权限规则 |
**pagination参数说明**
|参数名 |类型 |是否必填 |默认值 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|pageSize |Object |是 |- |每页数量 |
|current |Object |是 |- |当前页码 |
**rules参数说明**
rules下可以对不同的数据表配置不同的权限,比如以下规则代表”数据表list允许插入,数据表goods允许更新“
```
js
{
list
:
{
create
:
true
,
},
goods
:
{
update
:
true
}
}
```
|参数名 |类型 |是否必填 |默认值 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|create |Boolean|否 |false |是否开启插入权限 |
|read |Boolean|否 |true |是否开启读权限 |
|update |Boolean|否 |false |是否开启更新权限 |
|delete |Boolean|否 |false |是否开启删除权限 |
|aggregate |Boolean|否 |false |是否允许聚合 |
|lookup |Boolean|否 |false |是否允许联表查询 |
|blockedField |Array |否 |- |屏蔽的数据库字段,请阅读注意事项 |
|mixinCondition |Object |否 |- |混入条件,请阅读注意事项 |
|hooks |Object |否 |- |回调方法 |
**hooks参数说明**
|参数名 |类型 |是否必填 |默认值 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|beforeStageAppend |Function |否 |- |每个阶段被添加之前执行 |
|afterStageAppend |Function |否 |- |每个阶段被添加之后执行 |
|beforeSend |Function |否 |- |最终阶段'get', 'end', 'count', 'add', 'remove', 'update'添加之前执行,在beforeStageAppend之后 |
**回调方法的使用**
回调参数如下:
```
js
{
state
:
{
useAggregate
,
// 是否使用了聚合
useLookup
,
// 是否使用了联表查询
type
,
// 操作类型,可能的值为create、read、update、delete
collection
,
// 当前数据表名
methodList
// 使用到的方法列表
},
stage
:
{
method
,
// 当前阶段方法名
args
// 当前阶段方法参数
},
exec
// 已经组装的查询指令
}
```
回调方法中可以通过返回结果修改数据库指令,例如以下示例在skip之后插入一个limit
```
js
afterStageAppend
:
function
({
state
,
stage
,
exec
})
{
if
(
stage
.
method
===
'
skip
'
)
{
return
exec
.
limit
(
1
)
}
},
```
**注意事项**
-
关于blockedField
+
使用聚合时blockField不会覆盖客户端的project,而是在聚合第一阶段插入project
+
不使用聚合时会在最后阶段插入一个field(会覆盖客户端的field方法)
+
blockedField仅对读操作生效
-
关于mixinCondition
+
mixinCondition内可以使用数据库操作符
+
不使用聚合时mixinCondition会在没有where的时候在collection方法之后插入where,有where时会跟where条件进行合并,取原条件且mixinCondition。
+
使用聚合时会在第一阶段插入match使用混入的条件,如果有blockedField会插入在blockedField对应的project之前
+
mixinCondition会对除插入以外的所有操作生效
+
使用mixinCondition时客户端不可使用
`collection('xxx').doc('xxx')`
方法(1.0.8版本起即使有mixinCondition客户端也可以使用doc方法)
-
关于联表查询
+
连接的数据表也会受所配置的权限规则中对应数据表规则限制,主要是read,目前连接的数据表不会受blockedField限制
**参考**
在线通讯录项目,完整的演示了如何基于clientDB在客户端代码里实现数据的增删改查,是学习clientDB的重要示例项目。该项目插件地址:
[
https://ext.dcloud.net.cn/plugin?id=2574
](
https://ext.dcloud.net.cn/plugin?id=2574
)
\ No newline at end of file
uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
浏览文件 @
14d1d150
...
@@ -10,10 +10,10 @@
...
@@ -10,10 +10,10 @@
"forceInviteCode"
:
false
,
"forceInviteCode"
:
false
,
"app-plus"
:
{
"app-plus"
:
{
"tokenExpiresIn"
:
2592000
,
"tokenExpiresIn"
:
2592000
,
"oauth"
:
{
"oauth"
:
{
"weixin"
:
{
"weixin"
:
{
"appid"
:
"wx0411fa6a39d61297"
,
"appid"
:
"wx0411fa6a39d61297"
,
"appsecret"
:
"
fdc6251421d3d688a563b4f00dd540e7"
"appsecret"
:
"
6c9119430d7be0a147bcbbb73ef33acf"
},
},
"apple"
:
{
"apple"
:
{
"bundleId"
:
"io.dcloud.game.cat"
"bundleId"
:
"io.dcloud.game.cat"
...
@@ -21,18 +21,18 @@
...
@@ -21,18 +21,18 @@
}
}
},
},
"mp-weixin"
:
{
"mp-weixin"
:
{
"oauth"
:
{
"oauth"
:
{
"weixin"
:
{
"weixin"
:
{
"appid"
:
"weixin appid"
,
"appid"
:
"wx999bf02c8e05dfc9"
,
"appsecret"
:
"weixin appsecret"
"appsecret"
:
"b5f608afd332b2c0ded7e6b98ca4ccd3"
}
}
}
}
},
},
"mp-alipay"
:
{
"mp-alipay"
:
{
"oauth"
:
{
"oauth"
:
{
"alipay"
:
{
"alipay"
:
{
"appid"
:
"alipay appid"
,
"appid"
:
"alipay appid"
,
"privateKey"
:
"alipay privateKey"
"privateKey"
:
"alipay privateKey"
}
}
}
}
},
},
...
@@ -43,10 +43,10 @@
...
@@ -43,10 +43,10 @@
"smsKey"
:
"71a19f38c954f7d768d68a050486bf15"
,
"smsKey"
:
"71a19f38c954f7d768d68a050486bf15"
,
"smsSecret"
:
"d6c424b702d73baa3b6e1a1452469213"
"smsSecret"
:
"d6c424b702d73baa3b6e1a1452469213"
},
},
"univerify"
:
{
"univerify"
:
{
"appid"
:
"
Du9ZOTSzHO9vutboF6UYa3"
,
"appid"
:
"
__UNI__BC54A00"
,
"apiKey"
:
"d1e36bcd497b3795434d900dcfdd44dc"
,
"apiKey"
:
"d1e36bcd497b3795434d900dcfdd44dc"
,
"apiSecret"
:
"2feb378ff1114362b20ac179b572293e"
"apiSecret"
:
"2feb378ff1114362b20ac179b572293e"
}
}
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录