uni-app中支付宝云为什么不支持JQL常用运算方法?
uni-app中支付宝云为什么不支持JQL常用运算方法?
代码示例
let wallTemp = db.collection("demo-wallpaper").getTemp();
let classTemp = db.collection("demo-classify").getTemp();
let res = await db.collection(wallTemp, classTemp).field(`picurl, description, arrayElemAt(classid.name, 0) as classname`).get();
console.log(res);
如上所示代码,进行临表查询,正常阿里云使用 arrayElemAt(classid, 0) as classname
,可以直接获取到数组对象中的 name
的值,但是使用支付宝云获取到的结果是 classname: {value: Array(2)}
。
难道支付宝云不支持这种 JQL 常用运算方法吗???
HBuilderX 4.41.2024121203-alpha 已修复。
你骗人,根本就没修复。我看别人的文档以为是免费版的bug,就买了支付宝云的收费版,还是一样的问题。不支持就不支持嘛,发版要发到2025年吗
回复 蔷薇花盛开: 你是本地运行还是云端运行?
已知问题,已反馈支付宝云修复。
大概多久能修复知道吗,正在使用着那
回复 咸虾米: 支付宝那边已经修复,等待他们发版
回复 DCloud_uniCloud_CRL: 好的,感谢大佬
回复 DCloud_uniCloud_CRL: 大佬,都好几天了,支付宝云还不发版,解决JQL运算方法的问题呀?
回复 咸虾米: 他们应该有自己的发版节奏,再等等。
回复 DCloud_uniCloud_CRL: 大佬,支付宝云好像发版了,问题没解决,现在arrayElemAt(userid,0),都直接报错了,^^
回复 咸虾米: 目前我这边没有收到他们发版的消息,你是在哪里看到的。
回复 DCloud_uniCloud_CRL: 因为之前那么写不报错,现在这么写就报错了,我还以为发版了那,以为他们越改越错那,哈哈。
回复 咸虾米: [0].classname直接渲染,
都一个月了,支付宝云还没发版呀,还不支持那,还建议使用支付宝云吗?
这个修护重要!!!
原来,如表 ****.chema.json 还是上传一下,才能触发更新!
12月25号啦,圣诞节啦,还没修复呢亲
是还有问题吗?
回复 DCloud_uniCloud_CRL: 支付宝云,获取不到用户昵称: nickname: $.arrayElemAt(["$userList.nickname", 0]),
大佬,是不支持这种方式获取吗?我其他的项目都能获取到也是支付宝云
你这是要获取联表的nickanme值嘛
回复 hws007: 是啊
上面官方说了HBuilderX 4.41.2024121203-alpha 已修复。再等等正式版吧,还是先用传统方式,获取过来再遍历吧
回复 李白丨: min(userList.nickname) as nickname 你这样写
回复 咸虾米: 25年1月2号 跟着老师的课程试了下arrayElemAt(classid,0) as class能正常返回对象,在html里面用<view class="name">{{item.class.name}}</view>倒是正常,但是还是没法做到像老师示例那样arrayElemAt(classid.name,0) as classname
回复 5***@qq.com: 说是支付宝云发版了,但是好像还没有修复
回复 咸虾米: 嗯嗯 那我还是先暂时用arrayElemAt(classid,0) as class的方式了,虽然请求里response的数据还是一样多但是至少比{{item.classid[0].name}}来的舒服
回复 5***@qq.com: 可以在map循环遍历一次
回复 咸虾米: 现在不用遍历,arrayElemAt(classid,0) as class目前不会返回数组,是class对象,但是虽然arrayElemAt可以用了,但是现在是越改越坏了,现在的问题是classid.name没法正常返回,老师视频里面那种classid.name as classname直接返回为空了,原先只是取值恶心点 不好看,现在等于从表的整个对象都返回,多取了很多没必要的字段,浪费流量了,更恶心了
回复 咸虾米: 不过我现在用的是免费版支付宝云,不确定classid.name as classname查询不出来是否是免费版支付宝云特有的情况,等我用付费版支付宝云的时候会回来试验的
支付宝云问题好多.今天试了下,联表查询时以副表字段进行查询会出错.以官网文档的例子来运行都出错.而且官网的book和order那个未例的语法还是错的,少了个逗号.这也太不严谨了吧.
有问题我觉得都能理解,毕竟功能也比阿里云多,但是一个问题修了两三个月,还没修好这我是觉得不太能接受的。这哪里敢用支付宝云上线,不得被坑死
在探讨uni-app中支付宝云不支持JQL(JSON Query Language,一种用于查询和操作JSON数据的语言)常用运算方法的问题时,我们首先需要理解uni-app和支付宝云的集成方式以及JQL在不同平台上的实现差异。
背景理解
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,它支持编译到 iOS、Android、H5、以及各种小程序(包括支付宝小程序)。而支付宝云是阿里云针对支付宝小程序提供的一站式后端云服务,它提供了包括数据库、云函数、文件存储等在内的多种后端能力。
问题分析
-
平台限制:不同的小程序平台(如微信小程序、支付宝小程序等)对后端服务的支持和集成方式有所不同。支付宝云虽然提供了丰富的后端服务,但可能并不完全兼容或支持所有JQL的运算方法。
-
JQL实现差异:JQL本身可能在不同平台上有着不同的实现版本或支持程度。支付宝云可能基于自身的技术栈和服务需求,对JQL进行了定制或裁剪。
-
API设计:支付宝云可能更倾向于提供RESTful API或其他形式的接口来访问和操作数据,而不是直接支持JQL查询。
代码案例
鉴于支付宝云可能不支持JQL常用运算方法,我们可以通过使用支付宝云提供的API来实现类似的功能。以下是一个使用支付宝云RESTful API进行数据查询的示例代码(假设使用JavaScript/Node.js环境):
const axios = require('axios');
async function queryData(appId, appPrivateKey, accessToken, tableName, query) {
const url = `https://openapi.alipay.com/gateway.do`;
const method = 'POST';
const appPublicKey = 'your_app_public_key'; // 替换为你的应用公钥
const alipayPublicKey = 'your_alipay_public_key'; // 替换为支付宝公钥
const data = {
biz_content: {
table_name: tableName,
query: query,
},
app_id: appId,
method: 'alipay.cloud.db.query',
format: 'JSON',
charset: 'utf-8',
sign_type: 'RSA2',
timestamp: new Date().toISOString().replace(/[:.\-Z]/g, ''),
version: '1.0',
auth_token: accessToken,
};
// 这里需要添加签名逻辑,省略具体实现
// ...
try {
const response = await axios({
url,
method,
data: JSON.stringify(data),
headers: {
'Content-Type': 'application/json',
},
});
return response.data;
} catch (error) {
console.error('Error querying data:', error);
throw error;
}
}
// 使用示例
queryData('your_app_id', 'your_app_private_key', 'your_access_token', 'your_table_name', { /* your query params */ })
.then(result => console.log(result))
.catch(error => console.error(error));
请注意,上述代码仅为示例,实际使用时需要根据支付宝云的API文档完善签名逻辑和错误处理。