{ "bsonType": "object", "required": ["user_id", "article_id", "last_view_time", "first_view_time"], "permission": { "read": "doc.user_id == auth.uid || 'admin' in auth.role", // 仅本人(文章作者的"谁看过"统计走云函数) "create": "auth.uid != null && doc.user_id == auth.uid", // 只能写自己的浏览记录 "update": false, // 浏览日志不可修改 "delete": "'admin' in auth.role" // 仅管理员可删除 }, "properties": { "_id": { "description": "系统自动生成的文档ID", "bsonType": "string" }, "user_id": { "bsonType": "string", "description": "浏览用户ID", "foreignKey": "uni-id-users._id", "forceDefaultValue": { "$env": "uid" } }, "article_id": { "bsonType": "string", "description": "被浏览的文章ID", "foreignKey": "uni-cms-articles._id" }, "view_count": { "bsonType": "int", "description": "该用户对本文的浏览次数", "defaultValue": 1, "minimum": 0 }, "first_view_time": { "bsonType": "timestamp", "description": "首次浏览时间", "defaultValue": { "$env": "now" }, "errorMessage": "时间戳必须为有效数值" }, "last_view_time": { "bsonType": "timestamp", "description": "最近浏览时间", "defaultValue": { "$env": "now" }, "errorMessage": "时间戳必须为有效数值" } }, "indexes": [ { "IndexName": "user_article_unique", "MgoKeySchema": { "MgoIndexKeys": [ { "Name": "user_id", "Direction": "1" }, { "Name": "article_id", "Direction": "1" } ], "MgoIsUnique": true } }, { "IndexName": "article_last_view", "MgoKeySchema": { "MgoIndexKeys": [ { "Name": "article_id", "Direction": "1" }, { "Name": "last_view_time", "Direction": "-1" } ], "MgoIsUnique": false } } ] }