const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) const db = cloud.database() const _ = db.command // 云函数入口函数 exports.main = async (event, context) => { console.log(event) const {allData} = event const ID = allData.threepartyid + allData.groupmemberid const checkRes = await db.collection('usersinternet').where({_id: ID}).get(); if (checkRes.data.length > 0) { let res = {AlreadyExists: true} return res }else { await db.collection('usersdatas').doc(allData.threepartyid).update({ data: { groupmembersid: _.addToSet(ID), } }); await db.collection('usersdatas').doc(allData.groupmemberid).update({ data: { threepartysid: _.addToSet(ID), } }); if(allData.threepartyid === allData.groupmemberid){ await db.collection('usersinternet').doc(ID).set({ data: { //qrcodesid: q, isThreeParty: true, threepartyid: allData.threepartyid, isGroupMember:'', isNoGroupMember: true, threepartycreators: allData.threepartycreators, threepartymobile: allData.threepartymobile, threepartypartName: allData.threepartypartName, productvolume: allData.productvolume, groupmemberid: allData.groupmemberid , groupmembercreators: allData.groupmembercreators, groupmembermobile: allData.groupmembermobile, isGroupRegister: true , isEnable: true , createdatatime: Date.now(), startdate: allData.startdate, closedate:'', } }); }else{ await db.collection('usersinternet').doc(ID).set({ data: { //qrcodesid: q, threepartyid: allData.threepartyid, isGroupMember:'', isNoGroupMember: true, threepartycreators: allData.threepartycreators, threepartymobile: allData.threepartymobile, threepartypartName: allData.threepartypartName, productvolume: allData.productvolume, groupmemberid: allData.groupmemberid , groupmembercreators: allData.groupmembercreators, groupmembermobile: allData.groupmembermobile, isGroupRegister: true , isEnable: true , createdatatime: Date.now(), startdate: allData.startdate, closedate:'', } }); }; let ok = '用户关系网设置成功' return ok } }这个云函数你是否能找出问题,并指出问题,最好能优化代码,把优化后的代码发给我
时间: 2024-02-06 17:10:02 浏览: 36
这个云函数存在一些问题,我列出如下:
1.云函数的参数中没有设置allData对象,应该从event中获取。
2.云函数中的代码缺少错误处理和异常情况的处理逻辑,建议加上try-catch块。
3.更新usersdatas集合时,应该使用set操作符而不是update操作符,因为addToSet操作符只能用于set操作符。
4.在更新usersdatas集合时,应该首先获取文档,然后判断文档是否存在,如果不存在则需要创建一个新的文档。
5.在更新usersinternet集合时,应该首先获取文档,然后判断文档是否存在,如果不存在则需要创建一个新的文档。
6.在更新usersinternet集合时,应该使用update操作符而不是set操作符,因为set操作符会覆盖整个文档。
7.在更新usersinternet集合时,应该判断allData.threepartyid和allData.groupmemberid是否相等,如果相等则只需要设置isNoGroupMember标志位为true,否则需要同时设置isGroupMember和isNoGroupMember标志位为true。
8.在更新usersinternet集合时,应该将startdate和closedate转换成时间戳,并在查询时对时间戳进行比较。
9.在更新usersinternet集合时,应该将createdatatime设置为服务器端的时间,而不是客户端的时间,因为存在时区差异。
下面是我修改后的云函数代码:
```javascript
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database()
const _ = db.command
exports.main = async (event, context) => {
const { allData } = event
try {
// 判断是否已存在关系网
const ID = allData.threepartyid + allData.groupmemberid
const checkRes = await db.collection('usersinternet').doc(ID).get()
if (checkRes.data) {
return { AlreadyExists: true }
}
// 更新usersdatas集合
const threepartyDoc = await db.collection('usersdatas').doc(allData.threepartyid).get()
if (!threepartyDoc.data) {
await db.collection('usersdatas').doc(allData.threepartyid).set({ data: {} })
}
const groupmemberDoc = await db.collection('usersdatas').doc(allData.groupmemberid).get()
if (!groupmemberDoc.data) {
await db.collection('usersdatas').doc(allData.groupmemberid).set({ data: {} })
}
await db.collection('usersdatas').doc(allData.threepartyid).set({
data: {
groupmembersid: _.addToSet(ID),
},
})
await db.collection('usersdatas').doc(allData.groupmemberid).set({
data: {
threepartysid: _.addToSet(ID),
},
})
// 更新usersinternet集合
const startdate = new Date(allData.startdate).getTime()
const closedate = allData.closedate ? new Date(allData.closedate).getTime() : null
const isGroupMember = allData.threepartyid !== allData.groupmemberid
const isNoGroupMember = true
const createdatatime = Date.now()
const updateData = {
threepartyid: allData.threepartyid,
groupmemberid: allData.groupmemberid,
threepartycreators: allData.threepartycreators,
groupmembercreators: allData.groupmembercreators,
threepartymobile: allData.threepartymobile,
groupmembermobile: allData.groupmembermobile,
threepartypartName: allData.threepartypartName,
productvolume: allData.productvolume,
isGroupMember,
isNoGroupMember,
isGroupRegister: true,
isEnable: true,
createdatatime,
startdate,
closedate,
}
if (isGroupMember) {
await db.collection('usersinternet').doc(ID).update({ data: updateData })
} else {
await db.collection('usersinternet').doc(ID).set({ data: updateData })
}
return { message: '用户关系网设置成功' }
} catch (err) {
console.log(err)
return { errCode: -1, errMsg: '服务器繁忙,请稍后重试' }
}
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)