uni-app本地调试出现"PERMISSION_ERROR: 禁止使用数据库内包含的字段名作为别名,产生冲突的数据表为:opendb-contacts,产生冲突的字段名称为:nation_china"

uni-app本地调试出现"PERMISSION_ERROR: 禁止使用数据库内包含的字段名作为别名,产生冲突的数据表为:opendb-contacts,产生冲突的字段名称为:nation_china"

信息 内容
hbx版本 3.4.6.20220422

“PERMISSION_ERROR: 禁止使用数据库内包含的字段名作为别名,产生冲突的数据表为:opendb-contacts,产生冲突的字段名称为:nation_china”

“nation_china”: { “bsonType”: “string”, “title”: “民族”, “description”: “汉族”, “enum”: { “collection”: “opendb-nation-china”, “field”: “name as text ,_id as value” }, “componentForEdit”: { “name”: “uni-data-picker” } },

5 回复

发一下网络请求里面看到的查询语句


同问:(version:3.4.7.20220422)
请求参数如下:

method

“serverless.function.runtime.invoke” params

“{“functionTarget”:“DCloud-clientDB”,“functionArgs”:{“command”:{”$db":[{"$method":“collection”,"$param":[“opendb-contacts”]},{"$method":“field”,"$param":[“username,gender,mobile,email,comment,nation_china{name as text},address_china{name as text}”]},{"$method":“skip”,"$param":[0]},{"$method":“limit”,"$param":[20]},{"$method":“get”,"$param":[{}]}]},“clientInfo”:{“PLATFORM”:“h5”,“OS”:“ios”,“APPID”:“UNICAE4031”,“DEVICEID”:“16529520914813843339”,“CLIENT_SDK_VERSION”:“1.0.25”,“LOCALE”:“zh-Hans”}}}" spaceId

“3991b5d2-bb4d-481e-936c-6246d22fba68” timestamp

1652956605845 token

“575c566d-9ade-4914-b5a3-f68bddb91f8f”

产生了同样的问题,不知是什么原因?
版本 3.5.3.20220729

解决了,有外键,把外键加上就可以了

在 uni-app 本地调试时,出现 PERMISSION_ERROR: 禁止使用数据库内包含的字段名作为别名,产生冲突的数据表为:opendb-contacts,产生冲突的字段名称为:nation_china 的错误,通常是因为在数据库查询或操作中,使用了与数据库表字段名相同的别名,导致冲突。

解决方法:

  1. 检查查询语句

    • 确保在 SQL 查询或数据库操作中,没有使用与数据库表字段名相同的别名。
    • 例如,如果 nation_chinaopendb-contacts 表中的一个字段名,那么在查询时不要使用 nation_china 作为别名。
    -- 错误示例
    SELECT nation_china AS nation_china FROM `opendb-contacts`;
    
    -- 正确示例
    SELECT nation_china AS nation FROM `opendb-contacts`;
  2. 修改别名

    • 如果确实需要使用别名,请确保别名与数据库表字段名不同。
  3. 检查数据库表结构

    • 确认 opendb-contacts 表的结构,确保 nation_china 字段确实存在,并且没有其他字段或别名与之冲突。
  4. 检查代码逻辑

    • 检查代码中是否有其他地方(如 ORM 映射、数据模型等)使用了与数据库字段名相同的别名。
  5. 更新数据库或代码

    • 如果问题是由于数据库表结构或代码逻辑引起的,可能需要更新数据库表结构或修改代码逻辑。

示例代码:

假设你在 uni-app 中使用了云函数或云数据库操作,以下是一个可能的错误示例和修正方法:

// 错误示例
const db = uniCloud.database();
db.collection('opendb-contacts')
  .field('nation_china as nation_china') // 错误:别名与字段名相同
  .get()
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.error(err);
  });

// 正确示例
const db = uniCloud.database();
db.collection('opendb-contacts')
  .field('nation_china as nation') // 正确:使用不同的别名
  .get()
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.error(err);
  });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!