首页 uniCloud云开发 正文内容
uni-app 请求 uniCloud 报错:Identifier directly after number 如何解决?
2023年08月27日 385
通过 uniCloud 前端组件查询数据时,有时会报这个错误,解决这个问题很简单。
报错描述
用 uni-app 开发项目,后端用的是 uniCloud 云开发,前端通过 <unicloud-db>
组件来查询数据,uniCloud 返回的数据里提示报错了,下面是报错信息:
{
code: "SYSTEM_ERROR",
message: "Identifier directly after number (1:7)
}
返回的结果里没有要获取的数据。
报错原因分析
报错信息里 code 字段是 “SYSTEM_ERROR“,这是 uniCloud 端系统运行错误,无法返回查询数据的意思。根据报错信息,导致这个问题的原因是查询语句不合法导致。我的很多项目后端也是直接用 uniCloud 全家桶,这个问题我也遇到过,根据我的经验,出现这种问题时,你写的代码往往是这样的:
<template>
<unicloud-db v-slot:default="{data, loading, error, options}" @error="handleError" collection="post-xxx" field="title,author,cover,content,create_time,uid" :where="'uid=='+userId">
{{error.message}}
// 文章列表...
</unicloud-db>
</template>
上面代码中,where
的写法输出的结果是:uid==id123
,这个查询语句是不合法的,而合法的格式应该要包含引号的:uid=='id123'
。
解决办法
使用 javascript 常规的 +
来做字符串拼接,很容易出问题,我一般用模板字符串来写,最后将 where 的写法改成:
:where=`uid=='${userId}'`
这样的代码很直观,也很少漏掉这个引号。