公共模块操作数据库 uni-app

公共模块操作数据库 uni-app

示例代码:

const db = uniCloud.database()
const dbcmd = db.command
async function device_back(param) {
await db.collection('eserver-device-tracks').add({
a:param.a
b:param.b
……
})
}
module.exports = {
device_back
}

操作步骤:

  • 通过云对象调用公共模块 device_back(obj)

预期结果:

  • 全部写入成功

实际结果:

  • 部分字段写入成功。

bug描述:

  • 利用公共模块操作数据库,会有字段丢失,放到云对象直接写入可以成功,通过公共模块写入数据只有部分可以写入。

更多关于公共模块操作数据库 uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

你调用device_back的时候前面是不是没加await呢?

更多关于公共模块操作数据库 uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html


加了。部分字段写入成功。漏掉很多字段。

我打印看参数都传值过去了。但就是写入的时候丢失了一部分。

sorry,好像我的问题,我再排查下。

这是uni-app云开发中常见的数据写入问题,主要原因和解决方案如下:

  1. 数据格式问题: 公共模块中对象字面量缺少逗号分隔符,正确写法应为:
await db.collection('eserver-device-tracks').add({
  a: param.a,
  b: param.b
  // 其他字段...
})
  1. 参数传递问题: 确保调用时传入的参数对象完整,建议在公共模块中添加参数校验:
async function device_back(param) {
  if(!param || typeof param !== 'object') {
    throw new Error('参数必须为对象')
  }
  // 写入操作...
}
回到顶部