代码编织梦想

    getInitecode:async function(){
        const db=uniCloud.databaseForJQL()
        const id=await this.uniID.checkToken(this.getUniIdToken())
        const res=await db.collection('uni-id-users').where('_id=="'+id.uid+'"').field('my_invite_code').get()
        return res
    }

在保证数据库权限和用户权限没有问题的前题下,

如上代码,会报"Error: 权限校验未通过,未能获取当前用户信息,当前用户为匿名身份,"

问题是在代码第二行,

即使你在前段登录,在本地有TOKEN,但是在云函数里使用数据库连接时,并不能自动传送本地TOKEN信息到数据库连接.

这种情况只需要在第二行改为

const db=uniCloud.databaseForJQL({clientInfo:this.getClientInfo()})

然后就不报权限错误了.

倒数第二行JQL语法里where语句中,这样是正常工作的,但是文档中的,.where('_id==$cloudEnv_uid')写法不生效,会报个本地没有schema的错.

不知道什么原因.如下所示

//const res=await db.collection('uni-id-user').where('_id==$cloudEnv_uid').field('my_invite_code').get()

报错如下

有了解的同学请指导!~ 

3小时后==>

已解决,

表名少写了个s, 检查了n遍,也没有检查出来,浪费我半天时间.

下面是完整代码,留做笔记

//云对象中
const uniID = require('uni-id-common')
module.exports = {
	_before: function () { // 通用预处理器
		const clientInfo = this.getClientInfo()
		this.uniID = uniID.createInstance({ // 创建uni-id实例,其上方法同uniID
			clientInfo
		})
	},
	/**
	 * method1方法描述
	 * @param {string} a 传入本地token
	 * @returns {object} 返回uid
	 */
	checkLogin: async function(token){
		u= await this.uniID.checkToken(a)
		return u.uid
	},
	getInitecode:async function(){
		const db=uniCloud.databaseForJQL({clientInfo:this.getClientInfo()})
		const id=await this.uniID.checkToken(this.getUniIdToken())
//		db.setUser(id)
		//const res=await db.collection('uni-id-users').where('_id=="'+id.uid+'"').field('my_invite_code').get()
		  const res=await db.collection('uni-id-user').where('_id==$cloudEnv_uid').field('my_invite_code').get()
		return {errCode: 0,errMsg: res}
	}
}

云对象同级文件package.json,如果在新建云对象时选择了依赖,就不用管这个,主要是里面的dependencies

{
  "name": "touserget",
  "dependencies": {
    "uni-id-common": "file:../../../uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common",
    "uni-config-center": "file:../../../uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
  },
  "extensions": {
    "uni-cloud-jql": {}
  },
    "cloudfunction-config": {
  		"memorySize": 256,
  		"timeout": 5,
  		"triggers": [{
  				"name": "myTrigger",
  				"type": "timer",
  				"config": "0 0 2 1 * * *"
  		}],
  		"path": "",
  		"runtime": "Nodejs14"
  	}
}

前端

	async function go3() {
	
		const todo = uniCloud.importObject('sj-user')
		await todo.getInitecode().then((res)=>{
			console.log(res);
		})
	}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sj21521/article/details/138754396

uniCloud 未能获取当前用户信息:30205 | 当前用户为匿名身份-爱代码爱编程

最近在使用uniapp云开发,用到了 unicloud-db 组件,但在组件的数据请求却拉不到数据,看接口返回如下错误:未能获取当前用户信息:30205 | 当前用户为匿名身份 然后检查了一遍,排查了dcloud账号,云空间关联,均未发现问题,最后看了下 uniCloud-aliyun/database/diary.schema.json配置发现是 pe

uniCloud 未能获取当前用户信息和权限校验未通过-爱代码爱编程

最近在使用uniapp云开发,请求数据的时候,会返回如下错误: 未能获取当前用户信息:30205 | 当前用户为匿名身份权限校验未通过解决方式如下: 先排查了dcloud账号,云空间关联,如果均未发现问题,最后看下 uniCloud-aliyun/database配置下的 permission 权限配置问题,这里需要根据需要设置增删改查 create/

unicloud通讯录实战_gentletk的博客-爱代码爱编程

1 新建uni-app项目——通讯录 在 HBuilder 选择文件,新建(如果提示需要安装插件,按照提示安装即可,稍后会要求登陆,如果没有HBuilder账户,可以根据提示去注册): 2 创建云服务空间并关联项目

【uncloud】在使用uni-admin时遇到的问题(原unicloud-admin)_genius-sue的博客-爱代码爱编程

目录 一、前言二、遇到的几个小问题问题一:可登录应用解决方法、步骤 一、前言   这是我跟着官方的教学视频学习时遇到的一切小问题,由于我是初学,也没什么很多Vue一类的基础,所以学起来可能才会觉得这

unicloud云开发----4、unicloud云开发进阶使用方法-爱代码爱编程

uniCloud云开发进阶使用方法 前言1、云对象的importObject的创建和使用(1)创建云对象(2)编辑云对象(3)在.vue文件中调用云对象(4)在.vue文件中调用方法 2、客户端直接连接数据库(1

聊聊unicloud的jql在客户端、云端函数、云端对象中的使用-爱代码爱编程

在云函数内通过传统api操作数据库:(143条消息) uniCloud增删改查-好文_阿晨学前端的博客-CSDN博客  JQL,是一种js方式操作数据库的规范,方便与多表联查,它避免了使用db.command进行复杂操作,下面举两个个例子: //db.command 使用 const dbCmd = db.command db.collec

uni-id-users permission-爱代码爱编程

问题描述:在集成uni-starter组件,进行微信登录后,报此错。 查看uni-id-users.schema.json表,发现没有设置permission。 解决:设置permission  "permission": {         "read": true,         "create": "'CREATE_UNI_ID_USER

报`uncaught (in promise)`错误解决办法_uncaught (in promise) error-爱代码爱编程

使用了promise,但是在使用的过程中报Uncaught (in promise)错误,第一次遇到这种错误,所以在此记录下,方便以后解决问题 getImage: function(url) { return ne

项目中报错 uncaught (in promise)-爱代码爱编程

项目中报错 Uncaught (in promise) 一、问题:当你调用 Promise.reject() 回调的时候,Chrome 控制台中出现一条警告消息“Uncaught (in promise)”。 例如你简单

unicloud中云函数、云对象、schema表、opendb、jql概述_opendb-爱代码爱编程

云函数 cloudfunctions/myCloud/index.js exports.main = async (event, context) => { const { name, age } = event return `我是${name},今年${age}` }; pages/index/index.vue

uncaught (in promise) 的解决方法,可能原因_uncaught (in promise) typeerror: data.data.records-爱代码爱编程

Uncaught (in promise) 的解决方法,可能原因;仅仅只是一种参考原因 我是因为copy的项目直接修改的,结果一直报错 Uncaught (in promise),检查发现接口请求数据已经正常返回,后来经过

uncaught (in promise) error: 权限校验未通过,请参考文档:错误的处理方法_uncaught (in promise) typeerror: permissions check-爱代码爱编程

# 使用uniapp在编程过程出现如下错误:Uncaught (in promise) Error: 权限校验未通过,请参考文档:ttps://uniapp.dcloud.net.cn/uniCloud/schema.html#handler-permission-error at chunk-vendors.js:40836:20 。但使用webmast