提交 d8a6385f 编写于 作者: DCloud_JSON's avatar DCloud_JSON 提交者: Anne_LXM

comment表改为opendb-notice-comment

上级 b4273151
{ {
"name" : "hello uniCloud", "name" : "hello uniCloud",
"appid" : "", "appid" : "__UNI__8113B5C",
"description" : "为开发者提供的基于 serverless 模式和 js 编程的云开发平台。示例代码", "description" : "为开发者提供的基于 serverless 模式和 js 编程的云开发平台。示例代码",
"versionName" : "1.0.2", "versionName" : "1.0.2",
"versionCode" : 102, "versionCode" : 102,
...@@ -51,38 +51,7 @@ ...@@ -51,38 +51,7 @@
"payment" : {}, "payment" : {},
"oauth" : {} "oauth" : {}
}, },
"icons" : { "icons" : {}
"android" : {
"hdpi" : "unpackage/res/icons/72x72.png",
"xhdpi" : "unpackage/res/icons/96x96.png",
"xxhdpi" : "unpackage/res/icons/144x144.png",
"xxxhdpi" : "unpackage/res/icons/192x192.png"
},
"ios" : {
"appstore" : "unpackage/res/icons/1024x1024.png",
"ipad" : {
"app" : "unpackage/res/icons/76x76.png",
"app@2x" : "unpackage/res/icons/152x152.png",
"notification" : "unpackage/res/icons/20x20.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"proapp@2x" : "unpackage/res/icons/167x167.png",
"settings" : "unpackage/res/icons/29x29.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"spotlight" : "unpackage/res/icons/40x40.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png"
},
"iphone" : {
"app@2x" : "unpackage/res/icons/120x120.png",
"app@3x" : "unpackage/res/icons/180x180.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"notification@3x" : "unpackage/res/icons/60x60.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"settings@3x" : "unpackage/res/icons/87x87.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png",
"spotlight@3x" : "unpackage/res/icons/120x120.png"
}
}
}
} }
}, },
"quickapp" : {}, "quickapp" : {},
......
...@@ -10,20 +10,20 @@ ...@@ -10,20 +10,20 @@
</view> </view>
<text @click="options.selfId?$refs.dialog.open():tipLogin()" class="comment-btn">写留言</text> <text @click="options.selfId?$refs.dialog.open():tipLogin()" class="comment-btn">写留言</text>
</view> </view>
<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" :options="options" page-data="replace" <unicloud-db v-if="noticeData._id" ref="udb" v-slot:default="{data, loading, error, options}" :options="options" page-data="replace"
collection="comment,uni-id-users" field="uid{username,_id},text,_id,state" :where="options.where"> collection="opendb-notice-comment,uni-id-users" field="user_id{nickname,_id},text,_id,state" :where="options.where">
<scroll-view :show-scrollbar="true" scroll-y v-if="data.length" class="comment-list"> <scroll-view :show-scrollbar="true" scroll-y v-if="data.length" class="comment-list">
<view class="comment-item" v-for="(item,index) in data" :key="item._id"> <view class="comment-item" v-for="(item,index) in data" :key="item._id">
<image class="userImg" :src="'../../../static/userImg/'+item.uid[0].username+'.png'" mode=""></image> <image class="userImg" :src="'../../../static/userImg/'+item.user_id[0].nickname+'.png'" mode=""></image>
<view class="content"> <view class="content">
<view style="flex-direction: column;"> <view style="flex-direction: column;">
<text style="color: #666;font-size: 14px;font-weight:700;">{{item.uid[0].username}}</text> <text style="color: #666;font-size: 14px;font-weight:700;">{{item.user_id[0].nickname}}</text>
<text style="color: #888;font-size: 14px;">{{item.text}}</text> <text style="color: #888;font-size: 14px;">{{item.text}}</text>
</view> </view>
<view style="flex-direction: row;"> <view style="flex-direction: row;">
<switch v-if="options.role.index>1" class="switch" :checked="item.state==1" <switch v-if="options.role.index>1" class="switch" :checked="item.state==1"
@change="updateState($event,item._id)" /> @change="updateState($event,item._id)" />
<template v-if="options.selfId == item.uid[0]._id || options.role.index>1"> <template v-if="options.selfId == item.user_id[0]._id || options.role.index>1">
<text class="in-review" v-if="options.role.index===1&&item.state==0">审核中</text> <text class="in-review" v-if="options.role.index===1&&item.state==0">审核中</text>
<uni-icons v-else color="#cdcfd4" class="ico" size="16" type="compose" <uni-icons v-else color="#cdcfd4" class="ico" size="16" type="compose"
@click="clickIcon(0,item)"></uni-icons> @click="clickIcon(0,item)"></uni-icons>
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<uni-list-item title="敏感词过滤" note="发表留言内容含test会被拦截请求" /> <uni-list-item title="敏感词过滤" note="发表留言内容含test会被拦截请求" />
<uni-list-item title="编辑/删除留言" note="限用户编辑或删除自己发表的留言.管理员可以删除/编辑任何人的留言" /> <uni-list-item title="编辑/删除留言" note="限用户编辑或删除自己发表的留言.管理员可以删除/编辑任何人的留言" />
<uni-list-item title="公告的阅读量" note="1.读取,限登陆用户查看文章阅读量; \n 2.自增,阅读量自动增加由特殊的云函数add_view_count完成" /> <uni-list-item title="公告的阅读量" note="1.读取,限登陆用户查看文章阅读量; \n 2.自增,阅读量自动增加由特殊的云函数add_view_count完成" />
<uni-list-item title="数据查询" note="完整留言数据,由comment,uni-id-users连张表,通过foreignKey联查获取" /> <uni-list-item title="数据查询" note="完整留言数据,由opendb-notice-comment,uni-id-users连张表,通过foreignKey联查获取" />
</uni-popup> </uni-popup>
<set-permission @change="changePermission"></set-permission> <set-permission @change="changePermission"></set-permission>
</view> </view>
...@@ -64,17 +64,17 @@ ...@@ -64,17 +64,17 @@
}, },
data() { data() {
return { return {
noticeData: {
"_id": null
},
currentRole: 0, currentRole: 0,
options: { options: {
"selfId": "", "selfId": "",
"where": "state==1", "where": "",// 默认为空,在查到公告内容后设置
role: { role: {
index: 0 index: 0
}, },
}, },
noticeData: {
"_id": null
},
activeNoticeId: false, activeNoticeId: false,
defaultText: "", defaultText: "",
fields: "data", fields: "data",
...@@ -110,16 +110,16 @@ ...@@ -110,16 +110,16 @@
this.options.selfId = role.uid this.options.selfId = role.uid
switch (role.index) { switch (role.index) {
case 0: case 0:
this.options.where = "state==1" this.options.where = `state == 1 && notice_id == "${this.noticeData._id}"`
break; break;
case 1: case 1:
this.options.where = "state==1 || uid._id==$env.uid" this.options.where = `state == 1 && notice_id == "${this.noticeData._id}" || user_id._id==$env.uid`
break; break;
case 2: case 2:
this.options.where = {} this.options.where = {"notice_id":this.noticeData._id}
break; break;
case 3: case 3:
this.options.where = {} this.options.where = {"notice_id":this.noticeData._id}
break; break;
default: default:
break; break;
...@@ -131,10 +131,12 @@ ...@@ -131,10 +131,12 @@
async getNoticeData() { async getNoticeData() {
let res = await db.action('add_view_count') let res = await db.action('add_view_count')
.collection('opendb-notice') .collection('opendb-notice')
.doc("65365ac355b3379a66170144")
.field('data,_id,update_time,view_count') .field('data,_id,update_time,view_count')
.get(); .get();
console.log("res: ",res); console.log("res: ",res);
this.noticeData = res.result.data[0] this.noticeData = res.result.data[0]
this.options.where = `state == 1 && notice_id == "${this.noticeData._id}"`
}, },
async clickIcon(e, item) { async clickIcon(e, item) {
if (e) { if (e) {
...@@ -150,7 +152,7 @@ ...@@ -150,7 +152,7 @@
uni.showLoading({ uni.showLoading({
mask: true mask: true
}); });
return await db.collection('comment') return await db.collection('opendb-notice-comment')
.doc(_id) .doc(_id)
.update({ .update({
"state": e.detail.value / 1 "state": e.detail.value / 1
...@@ -228,7 +230,8 @@ ...@@ -228,7 +230,8 @@
return false return false
} }
this.$refs.dialog.close() this.$refs.dialog.close()
return await db.collection('comment').add({ return await db.collection('opendb-notice-comment').add({
notice_id:this.noticeData._id,
text text
}).then(res => { }).then(res => {
console.log(res); console.log(res);
......
// 开发文档:https://uniapp.dcloud.io/uniCloud/clientdb?id=action // 开发文档:https://uniapp.dcloud.io/uniCloud/clientdb?id=action
const db = uniCloud.database() const db = uniCloud.database()
const commentDb = db.collection('comment') const commentDb = db.collection('opendb-notice-comment')
module.exports = { module.exports = {
before: async (state, event) => { before: async (state, event) => {
if(state.auth.role.includes('USER')){ if(state.auth.role.includes('USER')){
......
...@@ -143,10 +143,11 @@ ...@@ -143,10 +143,11 @@
"permission-test-7": { "permission-test-7": {
"data": [{"state":0,"text":"该用户比较懒啥也没写!"}] "data": [{"state":0,"text":"该用户比较懒啥也没写!"}]
}, },
"comment": {}, "opendb-notice-comment": {},
"opendb-notice": { "opendb-notice": {
"data": [{ "data": [{
"view_count": 0, "view_count": 0,
"_id":"65365ac355b3379a66170144",
"data": "这是一个由clientDB实现的留言板示例;权限部分由DBschema和action云函数控制。\n规则如下:\n 1.未登陆的游客,只能看到审核通过的留言。\n 2.登陆的用户还可以:发表留言,会进入审核状态,期间支持查看和删除。审核通过后可以重新编辑留言。但在重新编辑后会自动再次进入审核状态。\n 3.审核员和管理员可以:查看所有状态的留言,操作:审核、编辑、删除。" "data": "这是一个由clientDB实现的留言板示例;权限部分由DBschema和action云函数控制。\n规则如下:\n 1.未登陆的游客,只能看到审核通过的留言。\n 2.登陆的用户还可以:发表留言,会进入审核状态,期间支持查看和删除。审核通过后可以重新编辑留言。但在重新编辑后会自动再次进入审核状态。\n 3.审核员和管理员可以:查看所有状态的留言,操作:审核、编辑、删除。"
}] }]
}, },
...@@ -154,16 +155,19 @@ ...@@ -154,16 +155,19 @@
"uni-id-users": { "uni-id-users": {
"data": [{ "data": [{
"username": "admin", "username": "admin",
"nickname": "admin",
"password": "03caebb36670995fc261a275d212cad65e4bbebd", "password": "03caebb36670995fc261a275d212cad65e4bbebd",
"role": ["admin"] "role": ["admin"]
}, },
{ {
"username": "user", "username": "user",
"nickname": "user",
"password": "03caebb36670995fc261a275d212cad65e4bbebd", "password": "03caebb36670995fc261a275d212cad65e4bbebd",
"role": ["USER"] "role": ["USER"]
}, },
{ {
"username": "auditor", "username": "auditor",
"nickname": "auditor",
"password": "03caebb36670995fc261a275d212cad65e4bbebd", "password": "03caebb36670995fc261a275d212cad65e4bbebd",
"role": ["AUDITOR"] "role": ["AUDITOR"]
} }
......
...@@ -3,20 +3,24 @@ ...@@ -3,20 +3,24 @@
"bsonType": "object", "bsonType": "object",
"required": [], "required": [],
"permission": { "permission": {
"read": "doc.state == 1 || auth.uid == doc.uid || 'AUDITOR' in auth.role", "read": "doc.state == 1 || auth.uid == doc.user_id || 'AUDITOR' in auth.role",
"create": "auth.uid != null", "create": "auth.uid != null",
"update": "(auth.uid == doc.uid && 'up_comment' in action) || 'AUDITOR' in auth.role", "update": "(auth.uid == doc.user_id && 'up_comment' in action) || 'AUDITOR' in auth.role",
"delete": "auth.uid == doc.uid" "delete": "auth.uid == doc.user_id"
}, },
"properties": { "properties": {
"_id": { "_id": {
"description": "ID,系统自动生成" "description": "ID,系统自动生成"
}, },
"notice_id": {
"description": "通知的id",
"foreignKey": "opendb-notice._id"
},
"text": { "text": {
"bsonType": "string", "bsonType": "string",
"validateFunction": "word_filter" "validateFunction": "word_filter"
}, },
"uid": { "user_id": {
"forceDefaultValue": { "forceDefaultValue": {
"$env": "uid" "$env": "uid"
}, },
......
{
"bsonType": "object",
"permission": {
"read": true,
"create": "'CREATE_UNI_ID_USERS' in auth.permission",
"update": "doc._id == auth.uid || 'UPDATE_UNI_ID_USERS' in auth.permission",
"delete": "'DELETE_UNI_ID_USERS' in auth.permission"
},
"properties": {
"_id": {
"description": "存储文档 ID(用户 ID),系统自动生成"
},
"ali_openid": {
"bsonType": "string",
"description": "支付宝平台openid",
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"apple_openid": {
"bsonType": "string",
"description": "苹果登录openid",
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"avatar": {
"bsonType": "string",
"description": "头像地址",
"title": "头像地址",
"trim": "both",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "doc._id == auth.uid || 'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"avatar_file": {
"bsonType": "file",
"description": "用file类型方便使用uni-file-picker组件",
"title": "头像文件",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "doc._id == auth.uid || 'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"comment": {
"bsonType": "string",
"description": "备注",
"title": "备注",
"trim": "both",
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"dcloud_appid": {
"bsonType": "array",
"description": "允许登录的客户端的appid列表",
"foreignKey": "opendb-app-list.appid",
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"department_id": {
"bsonType": "array",
"description": "部门ID",
"enum": {
"collection": "opendb-department",
"field": "_id as value, name as text",
"orderby": "name asc"
},
"enumType": "tree",
"title": "部门",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"email": {
"bsonType": "string",
"description": "邮箱地址",
"format": "email",
"title": "邮箱",
"trim": "both",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"email_confirmed": {
"bsonType": "int",
"defaultValue": 0,
"description": "邮箱验证状态:0 未验证 1 已验证",
"enum": [{
"text": "未验证",
"value": 0
},
{
"text": "已验证",
"value": 1
}
],
"title": "邮箱验证状态",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"gender": {
"bsonType": "int",
"defaultValue": 0,
"description": "用户性别:0 未知 1 男性 2 女性",
"enum": [{
"text": "未知",
"value": 0
},
{
"text": "男",
"value": 1
},
{
"text": "女",
"value": 2
}
],
"title": "性别",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"invite_time": {
"bsonType": "timestamp",
"description": "受邀时间",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"inviter_uid": {
"bsonType": "array",
"description": "用户全部上级邀请者",
"trim": "both",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"last_login_date": {
"bsonType": "timestamp",
"description": "最后登录时间",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"last_login_ip": {
"bsonType": "string",
"description": "最后登录时 IP 地址",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"mobile": {
"bsonType": "string",
"description": "手机号码",
"pattern": "^\\+?[0-9-]{3,20}$",
"title": "手机号码",
"trim": "both",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"mobile_confirmed": {
"bsonType": "int",
"defaultValue": 0,
"description": "手机号验证状态:0 未验证 1 已验证",
"enum": [{
"text": "未验证",
"value": 0
},
{
"text": "已验证",
"value": 1
}
],
"title": "手机号验证状态",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"my_invite_code": {
"bsonType": "string",
"description": "用户自身邀请码",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"nickname": {
"bsonType": "string",
"description": "用户昵称",
"title": "昵称",
"trim": "both",
"permission": {
"read": true,
"write": "doc._id == auth.uid || 'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"password": {
"bsonType": "password",
"description": "密码,加密存储",
"title": "密码",
"trim": "both"
},
"password_secret_version": {
"bsonType": "int",
"description": "密码使用的passwordSecret版本",
"title": "passwordSecret",
"permission": {
"read": false,
"write": false
}
},
"realname_auth": {
"bsonType": "object",
"description": "实名认证信息",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
},
"properties": {
"auth_date": {
"bsonType": "timestamp",
"description": "认证通过时间"
},
"auth_status": {
"bsonType": "int",
"description": "认证状态:0 未认证 1 等待认证 2 认证通过 3 认证失败",
"maximum": 3,
"minimum": 0
},
"contact_email": {
"bsonType": "string",
"description": "联系人邮箱"
},
"contact_mobile": {
"bsonType": "string",
"description": "联系人手机号码"
},
"contact_person": {
"bsonType": "string",
"description": "联系人姓名"
},
"id_card_back": {
"bsonType": "string",
"description": "身份证反面照 URL"
},
"id_card_front": {
"bsonType": "string",
"description": "身份证正面照 URL"
},
"identity": {
"bsonType": "string",
"description": "身份证号码/营业执照号码"
},
"in_hand": {
"bsonType": "string",
"description": "手持身份证照片 URL"
},
"license": {
"bsonType": "string",
"description": "营业执照 URL"
},
"real_name": {
"bsonType": "string",
"description": "真实姓名/企业名称"
},
"type": {
"bsonType": "int",
"description": "用户类型:0 个人用户 1 企业用户",
"maximum": 1,
"minimum": 0
}
},
"required": [
"type",
"auth_status"
]
},
"register_date": {
"bsonType": "timestamp",
"description": "注册时间",
"forceDefaultValue": {
"$env": "now"
},
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"register_ip": {
"bsonType": "string",
"description": "注册时 IP 地址",
"forceDefaultValue": {
"$env": "clientIP"
},
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"role": {
"bsonType": "array",
"description": "用户角色",
"enum": {
"collection": "uni-id-roles",
"field": "role_id as value, role_name as text"
},
"foreignKey": "uni-id-roles.role_id",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
},
"title": "角色"
},
"score": {
"bsonType": "int",
"description": "用户积分,积分变更记录可参考:uni-id-scores表定义",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"status": {
"bsonType": "int",
"defaultValue": 0,
"description": "用户状态:0 正常 1 禁用 2 审核中 3 审核拒绝",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
},
"enum": [{
"text": "正常",
"value": 0
},
{
"text": "禁用",
"value": 1
},
{
"text": "审核中",
"value": 2
},
{
"text": "审核拒绝",
"value": 3
}
],
"title": "用户状态"
},
"token": {
"bsonType": "array",
"description": "用户token",
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"username": {
"bsonType": "string",
"description": "用户名,不允许重复",
"title": "用户名",
"trim": "both",
"permission": {
"read": "doc._id == auth.uid || 'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"wx_openid": {
"bsonType": "object",
"description": "微信各个平台openid",
"properties": {
"app": {
"bsonType": "string",
"description": "app平台微信openid"
},
"mp": {
"bsonType": "string",
"description": "微信小程序平台openid"
},
"h5": {
"bsonType": "string",
"description": "微信公众号登录openid"
},
"web": {
"bsonType": "string",
"description": "PC页面扫码登录openid"
}
},
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"wx_unionid": {
"bsonType": "string",
"description": "微信unionid",
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"qq_openid": {
"bsonType": "object",
"description": "QQ各个平台openid",
"properties": {
"app": {
"bsonType": "string",
"description": "app平台QQ openid"
},
"mp": {
"bsonType": "string",
"description": "QQ小程序平台openid"
}
},
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"qq_unionid": {
"bsonType": "string",
"description": "QQ unionid",
"permission": {
"read": "'READ_UNI_ID_USERS' in auth.permission",
"write": "'CREATE_UNI_ID_USERS' in auth.permission || 'UPDATE_UNI_ID_USERS' in auth.permission"
}
},
"third_party": {
"bsonType": "object",
"description": "三方平台凭证",
"permission": {
"read": false,
"write": false
}
}
},
"required": []
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册