3分钟

任务 3 云开发数据库保存情感分析数据

任务目的

目前收集到的情感分析数据是直接在控制台打印出来,但没有进行保存。这一步先是在云开发的数据库中创建一个集合,用来保存评论的情感分析数据,然后借助云函数云函数调用数据库的API,将获取到的数据保存到云开发的数据库中,这样情感分析和数据保存的操作均可以在云端实现。保存的数据结果可以直接通过控制台查看,也可以调用数据库API获取。

任务步骤

1.功能预期效果展示

经过这一步的操作,我们希望能够完成如下功能:

新增一条评论,评论内容不再展示在控制台上,而是可以存入云开发的数据库中。

具体展示效果如下:

4-3-1 添加评论到数据库评论预期效果

注:控制台中打印的结果存储在 errMsg 中,是因为当前版本无论操作成功或失败,均使用此对象存储返回的结果,不代表存储数据的操作失败。

为完成上述功能,需要在云函数中调用云开发数据库的API,将获取到的内容存储到数据库中。下面将介绍具体的操作步骤。

2.在数据库中创建集合userComments

完整的操作示意图展示如下:

4-3-2 在数据库中创建新集合

下面是每一步的具体操作步骤介绍:

  • 点击 “云开发” ,进入云开发控制台;
  • 点击 “数据库” ,进入数据库界面;
  • 点击“+”按钮,输入新建的集合名称,然后点击 “确定” ,即可完成数据库中新集合的创建。

3.在云函数中添加数据到数据库

(1)云函数新增数据示例。

如果希望通过云函数新增数据,需要在云函数中调用数据库API,调用的示例代码如下(伪代码):

const db = cloud.database()
return await db.collection('userComments').add({
    data: {
        xxx:xxx
    }
}).then(res => {
    return xxx
})

上面的代码实现的功能,即是在数据库的集合userComments中新增一条数据,通过return返回执行结果。

接下来只需要在我们的云函数中,按照上面的格式传入情感分析的数据结果,即可实现将情感分析数据添加到数据库的userComments集合中。

注:关于在云函数中新增数据的详细说明,可以参考腾讯云的官方视频: 云开发进阶-在云函数中新增数据

(2)修改index.js逻辑代码。

在云函数addCommentindex.js中,添加以下内容:

【修改文件:index.js,所在页面:addComment】

......
cloud.init()
// 上方代码无需修改

// ++++++++++新增内容++++++++++
// 创建database对象
const db = cloud.database()
exports.main = async (event, context) => {
  // 调用getResult获取情感分析数据
  let result = await getResult(event.val)
  // 将获取到的结果添加到集合userComments
  return await db.collection('userComments').add({
    data: {
      comment: event.val,
      negative: result.Negative,
      positive: result.Positive,
      sentiment: result.Sentiment
    }
  })
}
// ++++++++++新增内容++++++++++

// 下方代码无需修改
function getResult(comment) {
  ......
}

这一部分的功能,是将用户评论,以及调用情感分析API获取到的数据存储到数据库的userComments集合中,并将执行结果返回到本地。

4.更新云函数代码

云函数中的代码默认存储在本地,如果希望更新后的代码生效,需要先将其上传到云端。由于先前已经进行了云函数的上传操作,现在只需要进行 “云函数增量上传” 即可。

保存云函数中的代码,右键点击云函数addComment中的index.js文件,选择 “云函数增量上传:更新文件” ,等待文件上传成功。操作示意图展示如下:

4-3-3 云函数增量上传

等待云函数更新成功后,便可以对新的功能进行测试验证。

5.检验运行结果

尝试新增评论,验证云开发控制台中,是否可以成功添加新的数据条目。

如果新的数据添加成功,且数据的字段完整,说明新增分析结果到数据库的操作执行成功。