[英]Update to database happens more than it should - vue.js this.$router.push and express
我正在尝试通过此代码更新mongo数据库。 问题是它更新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中检查当前的学生,并且方向(无关紧要)的问题正在等待中。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' })
}
我真的迷路了,不知道该怎么办:((不能真正上传小提琴bc,这是一个更大的项目的一部分)预先谢谢!
我相信这可能是for
循环不支持async/await
。
也就是说,for循环贯穿所有迭代,而不会“等待”您要运行的异步代码。
我建议您看一下诸如bluebirds的 promise.map
函数之类的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.