【发布时间】:2023-03-27 10:27:01
【问题描述】:
我正在尝试删除数据,但出现此错误:
this.jobPosts.filter is not a function
PostJobIndex.vue 文件:
deleteJobPost: async function(jobPost) {
if (!window.confirm('Are you sure you want to delete this Job Post?')) {
return;
}
try {
await employerService.deleteJobPost(jobPost.id);
this.jobPosts = this.jobPosts.filter(obj => {
return obj.id != jobPost.id;
});
console.log(this.jobPosts);
this.$toast.success("Job Post deleted Successfully!");
} catch (error) {
console.log(error);
this.$toast.error(error.response.data.message);
}
},
我的 Update 方法遇到了同样的问题,我相信这是因为我试图通过对象或其他东西而不是数组进行映射。最后,我使用Object.keys(this.jobPosts).map 作为我的更新方法并且它起作用了:
Object.keys(this.jobPosts).map(jobPost => {
if (jobPost.id == response.data.id) {
for (let key in response.data) {
jobPost[key] = response.data[key];
}
}
});
但是当我为更新执行此操作时,它不起作用:
this.jobPosts = Object.keys(this.jobPosts).filter(obj => {
return obj.id != jobPost.id;
});
更新
这是加载招聘信息的代码:
loadJobPosts: async function() {
try {
const response = await employerService.loadJobPosts();
this.jobPosts = response.data;
console.log(this.jobPosts);
} catch (error) {
this.$toast.error('Some error occurred, please refresh!');
}
},
我正在使用 Vuex 进行状态管理,并且我正在使用仅包含 axios http 请求的服务。这就是这条线来自employerService.loadJobPosts() loadJobPosts() 是我的employeesService.js 文件中的一个函数。
我的后端也使用 Laravel。这是我的 JobPostsController.php 文件:
public function index()
{
$jobPosts = JobPost::all()->where('user_id', Auth::user()->id);
return response()->json($jobPosts, 200);
}
【问题讨论】:
-
jobPosts 是一个数组吗?你能证实吗?大多数情况下,当您尝试对非数组类型应用过滤器时会发生此错误。
-
在我的 data() 对象中,我有这个 jobPosts: [],但在控制台中它显示 Object.我不知道如何将数据作为数组返回。
-
如果您可以编辑答案以包含将数据分配给
this.jobPosts的代码,这将很有帮助 -
好的,我在 UPDATED 下的帖子中添加了我的
loadJobPosts()函数和更多详细信息。 -
不确定您的 employerService 是否已经解析了 JSON 字符串。之后,只需使用 Object.values(this.jobPosts) 处理您解析的对象以获取您的数组。