《微信小程序开发从入门到实战》学习三十四

4.2 云开发JSON数据库

MySQL、Oracle之类的“关系型数据库”。JSON数据库是“非关系型数据库”,没有行表列的概念。

4.2.1 JSON数据库基本概念

集合:一个数据库有多个集合,一个集合存储通常是同一类数据,可看作为JSON数组,数组中每个元素是一条记录。对应表

记录:对应行

字段:对应列

数据库API:通过JS函数实现数据的增删改查

ID:每个记录都有一个_id,用于唯一标识一条记录

创建者:通过小程序端调用API新增记录,记录会自动添加_openid字段,代表小程序用户的ID。

云开发控制台或云函数新增记录,不会有_openid字段。

4.2.2 字段的数据类型

云开发数据库字段的数据类型除了包括string、number、boolean、null、Array、Object以外,还增加了两个特殊的数据类型,时间类型Date和地理位置点类型GeoPoint。

Date类型即JavaScript中的Date类型,以下代码可获取到Date类型:

{

time: new Date()

}

在小程序端获取的是手机设置时间,客户端时间,可能不准,可能手动调过。可以使用数据库API获取服务器端时间。代码如下:

// 这段代码可以出现在小程序页面的JS文件中或app.js文件中

    const db = wx.cloud.database() // 在小程序端获取JSON数据库的引用

    db.collection('testOne').add({ // 在JSON数据库的testOne集合中增加一个记录

      data:{

        createTime: db.serverDate() // createTime字段的数据类型为Date,时间为服务器时间

      }

    })

(源代码没有data:{createTime: db.serverDate()},有的是createTime: db.serverDate()。

我保存源代码后报错errCode: -401003 api parameter type error | errMsg: parameter.data should be object instead of undefined;

根据博客使用微信小程序-云开发时报错: Error: errCode: -401003 api parameter type error | errMsg: parameter.data should ...-CSDN博客

加了参数data,然后在云开发控制台加了testOne集合,保存了修改后的代码,没看到云开发控制台的集合新增记录,点击记录列表旁边的索引管理,数据权限再点击记录列表发现好几条记录,开心。图片如下:《微信小程序开发从入门到实战》学习三十四_第1张图片

)

使用wx.cloud.database前wx.cloud.init必须已经在app.js里被调用过了。

serverDate()函数可以传入offset属性的Json对象参数,单位参数毫秒,获取一定时间前后的时间

{

serverDate({

        offset: 60 * 60*1000 //获取服务器时间一个小时以后的时间

})

}

GeoPoint可以表示地理位置的点、线段、多边形区域以及它们的集合。使用如下代码在数据库中保存GeoPoint类型的数据。

// 这段代码可以出现在小程序页面的JS文件中或app.js文件中

    const db = wx.cloud.database() // 在小程序端获取JSON数据库的引用

    db.collection('testOne').add({ // 在JSON数据库的testOne集合中增加一个记录

      data:{

        point: db.Geo.Point(113,23), // 使用API函数创建一个东经113,北纬23的点

        line: db.Geo.LineString([ // 使用API函数创建线段,一条线段由两个或更多的点有序连接组成

          db.Geo.Point(113,23),

          db.Geo.Point(120,50),

          db.Geo.Point(114,50)

        ])

      }

    })

你可能感兴趣的:(微信小程序,小程序,学习)