【发布时间】:2018-09-04 08:15:34
【问题描述】:
我正在尝试通过此代码更新 mongo db。问题是它更新了 3 次而不是一次(我的当前数据在 posts.date 中有 3 个日期) 我正在使用 vue mongo express this.posts 是数据 数据看起来像这样
{
"posts": [
{
"date": [
{
"date": "180320",
"attend": "present"
},
{
"date": "180321",
"attend": "absent"
},
{
"date": "180322",
"attend": "present"
}
],
"_id": "5ab7a6396b92178b5a9c5118",
"netid": "cjp",
"name": "Colton"
},
{
"date": [
{
"date": "180320",
"attend": "present"
},
{
"date": "180321",
"attend": "present"
},
{
"date": "180322",
"attend": "present"
}
],
"_id": "5ab7a6466b92178b5a9c5119",
"netid": "do",
"name": "Daniela"
},
{
"date": [
{
"date": "180320",
"attend": "present"
},
{
"date": "180321",
"attend": "absent"
},
{
"date": "180322",
"attend": "absent"
}
],
"_id": "5ab7a6516b92178b5a9c511a",
"netid": "msa",
"name": "Marcus"
},
{
"date": [
{
"date": "180320",
"attend": "present"
},
{
"date": "180321",
"attend": "absent"
},
{
"date": "180322",
"attend": "late"
}
],
"_id": "5ab7bf736b92178b5a9c511b",
"netid": "test123",
"name": "Test"
代码如下所示。目标是当前学生。 每个 if 语句都会检查 this.posts 中的当前学生和方向(无论哪种方式) 问题是 await PostsService.updatePost 正在更新数据库 3 次,而它应该只更新一次。
async updatePost (target, direction) {
let day = this.today
for (let student in this.posts) {
if (this.posts[student].name == target && direction == 'left') {
let dateupdate = {date: day, attend: "present"}
let datearr = this.posts[student].date
//some more code in the middle
await PostsService.updatePost({
id: this.posts[student]._id,
netid: this.posts[student].netid,
name: this.posts[student].name,
date: this.posts[student].date
})
}
if (this.posts[student].name == target && direction == 'right') {
let dateupdate = {date: day, attend: "absent"}
let datearr = this.posts[student].date
//some more code in the middle
await PostsService.updatePost({
id: this.posts[student]._id,
netid: this.posts[student].netid,
name: this.posts[student].name,
date: this.posts[student].date
})
}
}
this.$router.push({ name: 'Posts' })
}
我真的很迷茫,不知道该怎么办:( (不能真正上传小提琴,因为它是更大项目的一部分) 先感谢您!
【问题讨论】:
标签: javascript mongodb mongoose vue.js async-await