JQL保存数据
- 发布:2024-02-01 23:19
- 更新:2024-02-02 12:56
- 阅读:606
产品分类: uniCloud/App
操作步骤:
预期结果:
保存数据成功
保存数据成功
实际结果:
报错:未能获取当前用户信息:当前用户为匿名身份
报错:未能获取当前用户信息:当前用户为匿名身份
bug描述:
JQL保存数据报错
Error: 未能获取当前用户信息:当前用户为匿名身份
Schema File如下:
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": true,
"update": true,
"delete": true
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"user_one": {
"description": "创建人ID,空间创建人ID",
"foreignKey": "uni-id-users._id",
"forceDefaultValue": {
"$env": "uid"
}
},
"reserved_1":{
"description": "预留字段",
"bsonType": "int"
}
}
}
云函数代码:
const dbJQL = uniCloud.databaseForJQL({e,c}).collection("zone")
return await dbJQL.add({reserved_1:0})
说明:用户已经登录,可以正常拿到token,也可以从token中解析到UID
最佳回复
uniCloud.databaseForJQL 这个API是需要传参数的,
云函数写法
exports.main = async (event, context) => {
const dbJQL = uniCloud.databaseForJQL({ // 获取JQL database引用,此处需要传入云函数的event和context,必传
event,
context
})
};
云对象写法
const dbJQL = uniCloud.databaseForJQL({ // 获取JQL database引用,此处需要传入云对象的clientInfo
clientInfo: this.getClientInfo()
})
直接指定用户角色权限写法
dbJQL.setUser({ // 指定后续执行操作的用户信息,此虚拟用户将同时拥有传入的uid、role、permission
uid: 'user-id', // 用户id
role: ['admin'], // 指定当前执行用户的角色为admin。如果只希望指定为admin身份,可以删除uid和permission字段
permission: [] // 用户权限
})
JoeX (作者)
传参了,是指没有写贴那么全的代码上来,e和c就是传的参数
2024-02-02 11:50
JoeX (作者)
e和c里面都有token
2024-02-02 11:52
DCloud_uniCloud_VK
回复 x***@sina.cn: 可能token过期了, 重新登录下
2024-02-02 11:52
JoeX (作者)
回复 DCloud_uniCloud_VK: token没有过期,能取出uid
2024-02-02 11:53
DCloud_uniCloud_VK
回复 x***@sina.cn: 你把token私发我下
2024-02-02 12:00
DCloud_uniCloud_VK
回复 JoeX: 你的token没问题,那就是初始化JQL的时候参数没传对
2024-02-02 12:10
JoeX (作者)
回复 DCloud_uniCloud_VK:
'use strict';
let uid = ""
var {tokenChecking} = require("token-checking")
const db = uniCloud.database()
const zoneDB = db.collection("zone")
const dbCmd = db.command
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('Zone event : ', event)
};
async function createZone(e, c) {
const zoneResult = await queryZoneByUserId(e,c)
console.log("zoneResult",zoneResult)
const dbJQL = uniCloud.databaseForJQL({e,c}).collection("zone")
return await dbJQL.add({reserved_1:0})
}
async function queryZoneByUserId(e, c) {
const zoneResult = await zoneDB.where(dbCmd.or({
user_id_1: uid
},{
user_id_2: uid
})).get()
}
2024-02-02 12:16
JoeX (作者)
createZone 这个函数应该没错吧
2024-02-02 12:16
JoeX (作者)
回复 JoeX: 函数最前面的check token都能拿到uid
2024-02-02 12:17