此贴已结,刚搞懂需要用JQL操作数据库
问题环境:
云空间是阿里云
hbuilder 3.6.4
项目从默认模板创建,vue2 ,勾选了启用unicloud
uni-id-page 从插件市场导入
问题场景:
数据库使用opendb-news-articles.schema表, 约束了需要登陆用户才可以创建数据,
但是小程序开发过程中,测试未登陆用户可以随意添加数据,而且不受表设计的必填约束,defaultValue默认值也没有自动生成。
翻阅文档后未能定位到问题原因,希望有类似问题的能解答一下
下方是数据表db
{
"bsonType": "object",
"required": [
"user_id",
"album",
"title",
"category_id"
],
"permission": {
"read": "doc.user_id == auth.uid && doc.article_status == 0 || doc.article_status == 1",
"create": "auth.uid != null",
"update": "doc.user_id == auth.uid",
"delete": "doc.user_id == auth.uid"
},
"properties": {
"_id": {
"description": "存储文档 ID(用户 ID),系统自动生成"
},
"user_id": {
"bsonType": "string",
"description": "文章作者ID, 参考`uni-id-users` 表",
"foreignKey": "uni-id-users._id",
"defaultValue": {
"$env": "uid"
}
},
"category_id": {
"bsonType": "string",
"title": "分类",
"description": "分类 id,参考`uni-news-categories`表",
"foreignKey": "opendb-news-categories._id",
"enum": {
"collection": "opendb-news-categories",
"field": "name as text, _id as value"
}
},
"title": {
"bsonType": "string",
"title": "标题",
"description": "标题",
"label": "标题",
"trim": "both"
},
"content": {
"bsonType": "string",
"title": "文章内容",
"description": "文章内容",
"label": "文章内容",
"trim": "right"
},
"album": {
"bsonType": "string",
"title": "相册",
"description": "相册",
"label": "相册",
"trim": "both"
},
"excerpt": {
"bsonType": "string",
"title": "文章摘录",
"description": "文章摘录",
"label": "摘要",
"trim": "both"
},
"article_status": {
"bsonType": "int",
"title": "文章状态",
"description": "文章状态:0 草稿箱 1 已发布 2 已删除 3 私密 99 审核未通过",
"defaultValue": 0,
"enum": [
{
"value": 0,
"text": "草稿箱"
},
{
"value": 1,
"text": "已发布"
},
{
"value": 2,
"text": "已删除"
},
{
"value": 3,
"text": "私密"
},
{
"value": 99,
"text": "审核未通过"
}
]
},
"view_count": {
"bsonType": "int",
"title": "阅读数量",
"description": "阅读数量",
"permission": {
"write": false
}
},
"like_count": {
"bsonType": "int",
"description": "喜欢数、点赞数",
"permission": {
"write": false
}
},
"is_sticky": {
"bsonType": "bool",
"title": "是否置顶",
"description": "是否置顶",
"permission": {
"write": false
}
},
"is_essence": {
"bsonType": "bool",
"title": "阅读加精",
"description": "阅读加精",
"permission": {
"write": false
}
},
"comment_status": {
"bsonType": "int",
"title": "开放评论",
"description": "评论状态:0 关闭 1 开放",
"enum": [
{
"value": 0,
"text": "关闭"
},
{
"value": 1,
"text": "开放"
}
]
},
"comment_count": {
"bsonType": "int",
"description": "评论数量",
"permission": {
"write": false
}
},
"last_comment_user_id": {
"bsonType": "string",
"description": "最后回复用户 id,参考`uni-id-users` 表",
"foreignKey": "uni-id-users._id"
},
"avatar": {
"bsonType": "string",
"title": "封面大图",
"description": "缩略图地址",
"label": "封面大图",
"trim": "both"
},
"publish_date": {
"bsonType": "timestamp",
"title": "发表时间",
"description": "发表时间",
"defaultValue": {
"$env": "now"
}
},
"publish_ip": {
"bsonType": "string",
"title": "发布文章时IP地址",
"description": "发表时 IP 地址",
"forceDefaultValue": {
"$env": "clientIP"
}
},
"last_modify_date": {
"bsonType": "timestamp",
"title": "最后修改时间",
"description": "最后修改时间",
"defaultValue": {
"$env": "now"
}
},
"last_modify_ip": {
"bsonType": "string",
"description": "最后修改时 IP 地址",
"forceDefaultValue": {
"$env": "clientIP"
}
},
"mode": {
"bsonType": "number",
"title": "排版显示模式",
"description": "排版显示模式,如左图右文、上图下文等"
}
},
"version": "0.0.1"
}
3 个回复
吃饱了不饿 (作者) - 吃饱了不饿
新增文章的云函数如下,token校验是自己添加的
DCloud_uniCloud_WYQ
schema仅对jql语法生效。云函数里面使用原始的数据库语句是不会使用schema进行校验的
吃饱了不饿 (作者)
嗯 明白了
2022-11-02 10:34
魑魅魍魉cmwl
云函数里要用JQL应该使用uniCloud.databaseForJQL()吧
吃饱了不饿 (作者)
是的
2022-11-02 10:35