m***@163.com
m***@163.com
  • 发布:2023-06-05 00:42
  • 更新:2023-07-12 17:25
  • 阅读:213

【报Bug】用户登录后,添加数据会报:当前用户为匿名身份

分类:uniCloud

产品分类: uniCloud/App

操作步骤:
// 云函数  
exports.main = async (event, context) => {  
    //event为客户端上传的参数  
    console.log('event : ', event)  
    const db = uniCloud.database()                    //登录后使用database 添加数据,没报错,但是带有默认值得字段都没有添加  
    //const db = uniCloud.databaseForJQL()        //登录后使用databaseForJQL添加数据,直接报错(未能获取当前用户信息:当前用户为匿名身份)  

    return db.collection('test').add(event)            //event = {content:"test",uniIdToken:"xxxxxxxx"}  
};
// 数据库字段模型  
{  
    "bsonType": "object",  
    "required": [],  
    "permission": {  
        "read": true,  
        "create": true,  
        "update": true,  
        "delete": true  
    },  
    "properties": {  
        "_id": {  
            "description": "ID,系统自动生成"  
        },  
        "user_id": {  
            "description": "对应用户的id",  
            "foreignKey": "uni-id-users._id",  
            "forceDefaultValue": {  
                "$env": "uid"  
            }  
        },  
        "userId": {  
            "description": "对应用户的id",  
            "foreignKey": "uni-id-users._id",  
            "forceDefaultValue": {  
                "$env": "uid"  
            }  
        },  
        "ip": {  
            "forceDefaultValue": {  
                "$env": "clientIP"  
            }  
        },  
        "content": {  
            "description": "内容"  
        }  
    }  
}

预期结果:

添加了一条数据,并且带有forceDefaultValue/defaultValue的字段自动添加上去

实际结果:

uniCloud.database() 可以添加成功,但有forceDefaultValue的字段并没有添加
uniCloud.databaseForJQL() 显示当前用户为匿名身份,添加失败

bug描述:

新的unicloude项目,使用了uni-id体系,使用了uni-id-pages插件,但是当我向数据库add一条数据时,字段如下:
当user_id字段添加了forceDefaultValue时,会添加失败,显示当前用户为匿名身份(当时我已经登录了,并且hasLogin为true,userInfo也有信息)
当去掉forceDefaultValue时候,就可以添加成功

{  
    "bsonType": "object",  
    "required": [],  
    "permission": {  
        "read": true,  
        "create": true,  
        "update": true,  
        "delete": true  
    },  
    "properties": {  
        "_id": {  
            "description": "ID,系统自动生成"  
        },  
        "user_id": {  
            "description": "对应用户的id",  
            "foreignKey": "uni-id-users._id",  
            "forceDefaultValue": {  
                "$env": "uid"  
            }  
        },  
        "userId": {  
            "description": "对应用户的id",  
            "foreignKey": "uni-id-users._id",  
            "forceDefaultValue": {  
                "$env": "uid"  
            }  
        },  
        "ip": {  
            "forceDefaultValue": {  
                "$env": "clientIP"  
            }  
        },  
        "content": {  
            "description": "内容"  
        }  
    }  
}
2023-06-05 00:42 负责人:无 分享
已邀请:
Hookin丶

Hookin丶

uni-id-pages有自带login页面,不知道你是不是用的自带的,可以补充更多关于这点的信息。

uniCloud.databaseForJQL() 是用的 uni-id 体系,uniCloud.database() 则不需要

DB Schema 只对 uniCloud.databaseForJQL()有用

"forceDefaultValue": {
"$env": "uid"
}
表示强制默认值为 uid

c***@126.com

c***@126.com

我也碰到同样的问题,解决了吗?

要回复问题请先登录注册