有没有办法在CRUD操作之后立即触发更新视图

时间:2019-06-03 10:50:32

标签: javascript node.js ajax elasticsearch

我有一个简单的CRUD应用程序。当我进行ajax调用以删除(例如)文档时,我想用新文档列表更新视图。

我尝试使用ajaxStop / ajaxSuccess和setTimeout。 SetTimeout效果很好,但是我要寻找的结果是没有超时。使用ajaxStop / ajaxSuccess,有时会更新视图。

const getAllDocument = () => {
        $.ajax({
            url: '/elastic/index/person',
            method: 'POST',
            global: false
        }).done(function(data){
                $("#personTable").empty();
                dataLength = data.length;
                for (let i = 0; i < data.length; i++) {
                    $("#personTable").append(data) // Just example
                }
        }).fail(function(err){
                console.log(err);
        });
    }

$('#confirmDelete').on('click', function () {
        let docType = $("#personTypeDelete").html();
        let _id = $("#personIdDelete").html();
        let data = {
            docType: docType,
            _id: _id
        }
        $.ajax({
            url: '/delete',
            method: 'DELETE',
            data: data

        }).done(function(data) {
            toastr.success("Delete person succeed!", '', toastOption);
            getAllDocument();
        }).fail(function(err) {
            toastr.error("Delete person failed!", '', toastOption);
            console.log(err);
        });
    });

我希望使用新人员列表更新的人员表在删除后立即将已删除的文档排除在外。 有什么方法或关键字可以帮助我解决此问题吗?

1 个答案:

答案 0 :(得分:0)

是的,Refresh

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-refresh.html

The Index, Update, Delete, and Bulk APIs support setting refresh to control 
when changes made by this request are made visible to search.

但这不是推荐的使用Elasticsearch的方式,Elasticsearch不是实时数据库,而是近实时数据库。在Elasticsearch中强制在巨大的集群中刷新并不是一个好主意。

因此,如果您知道自己在做什么,就可以使用它=)