我有一个非常大的对象数组,其中包含各种错误日志。总共有1015个对象。目前,每当我对其中一个对象中的值做一个小的更改时,我都会保存整个数组。这会导致超时错误,因为遍历整个数组需要太长时间。
因此,我想弄清楚如何更改它,以便程序只保存一个对象,如果该对象已在前端更改。
因此,如果我有1015个对象,我只修改了2号对象中的一些内容,那么只有2号对象应该在提交时保存。
我在想,也许可以先让程序查找任何更改。然后,如果发生了更改,它会将该特定对象移动到一个新的(空)对象,然后我可以提交。
在我的代码示例中,我希望在关键字为“done”的计算属性“Fields”上实现此函数。它包含一个复选框,用于将error.done值设置为true或false。因此,我希望程序检查此特定值是否已更改。如果它已从true更改为false,或者相反,我希望将此对象发送到一个新对象。
例如,如果errors.done从true设置为false,则将已更改的对象移动到名为changedValue的新对象。
<template>
<b-container>
<b-card class="mt-4">
<h5>{{ $t('events') }}</h5>
<b-table
:items="errors"
:fields="fields"
:per-page="[10, 25, 50]"
selectable
:select-mode="'single'"
@row-selected="onRowSelected"
@row-clicked="showModal"
sort-desc
/>
</b-card>
<error-log-entry-modal ref="errorLogEntryModal" :selected-error-log="selectedRows"/>
<button @click="submit">Submit</button>
</b-container>
</template>
<script>
import {errorService} from '@/services/error';
import ErrorLogEntryModal from '@/components/error-log/ErrorLogEntryModal';
import moment from 'moment';
export default {
components: {
ErrorLogEntryModal,
},
props: {
ownerId: String
},
data() {
return {
errors: null,
selectedRows: []
};
},
computed: {
fields() {
return [
{
key: 'done',
label: '',
thStyle: 'width: 1%',
template: {
type: 'checkbox',
includeCheckAllCheckbox: true,
}
},
{
key: 'priority',
label: this.$t('errorLogs.priority'),
sortable: true,
},
{
key: 'creationDateTime',
label: this.$t('creationDateTime'),
formatter: date => moment(date).locale(this.$i18n.locale).format('L'),
sortable: true,
},
{
key: 'stackTraceShort',
label: this.$t('errorLogs.stackTrace'),
sortable: true,
},
{
key: 'errorMessage',
label: this.$t('message'),
sortable: true
},
]
},
},
methods: {
load(){
errorService.getErrorLogs().then(result => {
result.data.forEach(log => log.stackTraceShort = log.stackTrace.substring(0,30));
this.errors = result.data
})
},
submit(){
return errorService.setStatusOnErrorEntryLog(this.errors).then( result => {
console.log(result)
})
},
onRowSelected(fields){
this.selectedRows = fields
},
showModal(){
if (this.selectedRows) {
this.$refs.errorLogEntryModal.show()
}
},
},
created() {
this.load()
},
};
</script>
1条答案
按热度按时间inkz8wg91#
如果我理解正确的话,选中的行对应的是错误。完成了吗?在这种情况下,你可以像这样编辑onRowSelected方法:
然后在提交方法中用这个.selectedRows替换这个.errors?