uni-app中opendb-verify-codes表的dbschema默认没有permission属性,你们系统是如何写入数据的

uni-app中opendb-verify-codes表的dbschema默认没有permission属性,你们系统是如何写入数据的

偶然发现模板表opendb-verify-codes的dbschema默认并没有设置permission属性,很好奇你们开发的开源系统,比如uni-starter是如何对表进行正删改查的,看了好几次代码我看都是普通的get和add操作,为什么我自己写云函数客户端也是在登录状态,云函数的event入参对象也能获取到uniIdToken,却无法查询和插入数据呢?

1 回复

更多关于uni-app中opendb-verify-codes表的dbschema默认没有permission属性,你们系统是如何写入数据的的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,如果你发现opendb-verify-codes表的dbschema默认没有permission属性,但你需要在该表中写入数据时考虑权限控制,可以通过以下方式来实现。这里我们假设你希望在写入数据前进行一些权限验证,而不是直接修改数据库schema来添加permission属性(因为uni-app的数据库设计不支持直接为表添加权限属性)。

以下是一个示例代码,展示了如何在写入数据前进行权限验证,并使用uni-app的uni.setStorageSyncuni.getStorageSync来模拟权限存储和检查:

  1. 定义权限存储逻辑(假设我们有一个简单的权限管理系统):
// 存储权限信息
function setUserPermission(permission) {
    uni.setStorageSync('userPermission', permission);
}

// 获取用户权限信息
function getUserPermission() {
    return uni.getStorageSync('userPermission');
}
  1. 定义写入数据前的权限验证逻辑
// 示例权限值
const REQUIRED_PERMISSION = 'WRITE_VERIFY_CODES';

// 写入数据函数
async function writeVerifyCode(code) {
    try {
        const userPermission = getUserPermission();
        
        if (userPermission && userPermission.includes(REQUIRED_PERMISSION)) {
            // 权限验证通过,执行写入操作
            const db = uni.getDatabase();
            await db.collection('opendb-verify-codes').add({
                data: {
                    code: code,
                    timestamp: new Date().getTime()
                }
            });
            console.log('Verify code added successfully.');
        } else {
            // 权限验证失败
            console.error('Permission denied: You do not have the required permission to write verify codes.');
        }
    } catch (error) {
        console.error('Error writing verify code:', error);
    }
}
  1. 使用写入数据函数
// 示例:写入一个验证码
const newVerifyCode = '123456';
writeVerifyCode(newVerifyCode);

在这个例子中,我们模拟了一个简单的权限管理系统,其中setUserPermissiongetUserPermission函数用于存储和获取用户的权限信息。writeVerifyCode函数在写入数据前检查用户是否具有WRITE_VERIFY_CODES权限,如果具有则执行写入操作,否则输出错误信息。

这种方法不需要修改数据库的schema,而是通过在应用层面控制权限来实现。你可以根据自己的需求扩展这个示例,比如添加更多的权限类型、从服务器获取权限信息等。

回到顶部