如何在控制台中为Dojo的JsonRest查询禁用错误日志记录?

velaa5lx  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(198)

我的项目使用JsonRest存储来访问它的数据。一切都很好。问题是当服务器返回错误时,即使调用了代码的正确部分,并且功能正常工作,对象也会将一个丑陋的错误记录到控制台。
我的代码:

function loadData() {
    self.storeItem.query({
        'id_metric' : self.selectMetrics.value,
        'id_client' : self.selectClients.value
    }).then(
        (res) => populateResults(res),
        ()=>{
            // this is called correctly...
            query('.res').forEach(domConstruct.destroy);
            domConstruct.place('<tr class="sem res"><td>No results</td></tr>', "tableLines", 'first');
        }
    );
}

// ..but this is logged in console:
Object { message: "Unable to load http://localhost:300…", stack: ".cache["dojo/errors/create"]/</</_3…", response: Object, status: 404, responseText: "{"errors":["Not found…", 
xhr: XMLHttpRequest }

我怎样才能使商店不显示错误?
我知道我可以更改服务器行为以返回代码200结果而不是404,但我想要的只是使它不向控制台发送错误。

kx5bkwkv

kx5bkwkv1#

这个错误由dojo/_base/xhr记录,dojo/store/JsonRest在内部使用它。我没有看到一个干净的方法来抑制它,除非你准备实现自己的存储。如果你是这样的话,你可以这样做:
dojo/_base/xhr有一个failOk参数,它完全符合您的要求,但dojo/store/JsonRest不使用它,默认值为false(将错误记录到控制台),因此您可以复制JsonRest的源代码,并在所有xhr调用中添加failOk: true,例如在查询函数中:

var results = xhr("GET", {
        url: this.target + (query || ""),
        handleAs: "json",
        headers: headers,
        failOk: true
    });

您仍然可以在错误处理函数中处理错误。

相关问题