仅供自学用,有错勿扰
问题
今天写小程序的帖子回复系统出了一个问题
总结起来要解决的问题是:
如何在小程序云数据库里,对某个集合的记录进行如下更改,
记录格式大概是下面这样,想进行的操作是,向commentsArray数组里增加一个新的“评论”
{
"_id": "cbddf0af60d8602a1301639a771296a3",
"content": "这是个发帖的内容",
"nickName": "发帖者",
"time": {
"$date": "2021-06-27T11:15:49.791Z"
},
"_openid": "11111",
"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/hAqvgicib3vQ7ic6CygicrvDNfqkia1H3nL1sbKvDOkXk9PA6PLbXuS2Y9Ep3Iy7ic3SsLVZaVyo88zScNE9wCicaKVew/132",
"commentsArray": [
{
"nickName": "评论者1",
"replysArray": [
{
"_openid": "111",
"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/oBO06ZkSGh2CYbiaia60AxeewGVqo8UCw00DleortA9Rp8uEV9PaicnuRoOVkHoPdtfnONtxY3TkNzeRzF7Uzrotw/132",
"floor": 0.0,
"nickName": "回复者1",
"replyContent": "这个是对此评论的回复",
"time": {
"$date": "2021-06-27T11:20:24.636Z"
}
},
{
"nickName": "回复楼中者1",
"replyContent": "这个是对一楼回复的回复",
"time": {
"$date": "2021-06-27T11:23:57.021Z"
},
"_openid": "111",
"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/MFcfqtbpodOuHWibJx9AqCIS2W0ClUreSgwjCRVswTEA7vcc5OCQeQVzf68GjQ7RXGPFQTjnRblf9gxQg41RQdQ/132",
"floor": "1"
}
],
"time": {
"$date": "2021-06-27T11:17:21.216Z"
},
"_openid": "111",
"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/icnVaBhGZu80jCQYicLDFY4pxtpE3GnDAC7q1WZ2lHrwC1fHEBTRZiapHcicfYA68YqL6x9Ivhjpf3B3f5kxPGYOSg/132",
"commentContent": "这个是对帖子的评论111"
},
{
"nickName": "评论者2",
"replysArray": [
{
"_openid": "111",
"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/sApu5JSU02iaoP1DsYfhmhTns6NNMX6TrBnxM2icYM2PDdecc76TvESC9joaxcuQas84PqHY1Pic82HO2WyRhXXrw/132",
"floor": 0.0,
"nickName": "回复者1",
"replyContent": "这个是对此评论的回复",
"time": {
"$date": "2021-06-27T11:20:24.636Z"
}
},
{
"nickName": "回复楼中者1",
"replyContent": "这个是对一楼回复的回复",
"time": {
"$date": "2021-06-27T11:23:57.021Z"
},
"_openid": "111",
"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/sApu5JSU02iaoP1DsYfhmhTns6NNMX6TrBnxM2icYM2PDdecc76TvESC9joaxcuQas84PqHY1Pic82HO2WyRhXXrw/132",
"floor": "1"
}
],
"time": {
"$date": "2021-06-27T11:17:21.216Z"
},
"_openid": "111",
"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/7ccIwL5cl0PIYiclpk4uN3QaYG51wJwpCCrelnD87qbAtLLDqlicpFUfctcwOZknWl1kgERuc37R4Fgeqz5HiaFVg/132",
"commentContent": "这个是对帖子的评论222"
}
]
}
解决方法
最后的解决方法是下面这样,先对某一个记录进行更新,在更新的过程中push一个新元素,其中有很多坑,我就写在后面了。
const _ = db.command//db是数据库,之前定义过了不再赘述
db.collection('post').doc('28ee4e3e60d9cafe25fb5d833f21d283').update({
data: {
commentsArray: _.push({
nickName: "评论者1",
replysArray: [],
time: new Date(),
_openid: "111",
avatarUrl: "https://thirdwx.qlogo.cn/mmopen/vi_32/icnVaBhGZu80jCQYicLDFY4pxtpE3GnDAC7q1WZ2lHrwC1fHEBTRZiapHcicfYA68YqL6x9Ivhjpf3B3f5kxPGYOSg/132",
commentContent: "这个是对帖子的评论111"
})
},
success: function (res) {
console.log(res)
}
})
坑
坑一
_.push不能直接push一个对象进去,比如不能先自己定义一个
newComment:{
nickName: "评论者1",
replysArray: [],
time: new Date(),
_openid: "111",
avatarUrl: "https://thirdwx.qlogo.cn/mmopen/vi_32/icnVaBhGZu80jCQYicLDFY4pxtpE3GnDAC7q1WZ2lHrwC1fHEBTRZiapHcicfYA68YqL6x9Ivhjpf3B3f5kxPGYOSg/132",
commentContent: "这个是对帖子的评论111"
}
然后
_.push(this.data.newComment)
坑二
本来想用set,但是死活都用不了,就放弃了