Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 没有延迟,“更新”不会触发_Javascript_Node.js_Sequelize.js - Fatal编程技术网

Javascript 没有延迟,“更新”不会触发

Javascript 没有延迟,“更新”不会触发,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我有以下代码: myTable() .update(data, { where: criteria }) .then(delay(100)) .then((entries) => { ... ... .thendelay100部分将延迟设置为100ms 如果我不使用这个延迟,有时结果更新行的条目是不正确的,这意味

我有以下代码:

 myTable()
            .update(data, {
                where: criteria
            })
            .then(delay(100))
            .then((entries) => {
            ...
            ...
.thendelay100部分将延迟设置为100ms

如果我不使用这个延迟,有时结果更新行的条目是不正确的,这意味着它们的字段没有更新。但有时确实如此

如果我使用延迟,条目的内容总是正确的

为什么我要设置一个延迟来让它工作

我的本地MySQL My.cnf文件:

在表架构和模型方面: 它有几个双列、几个datetime和char、一个json列和一个enum列。
它们在模型中的定义相同。

1请检查数据库上的隔离级别

2通常,s可能是您需要的,如果出现隔离级别问题,请尝试为事务选择不同的隔离级别

3群集模式可能会导致此类问题

因此。然后。。。在解析更新承诺后执行块。并且它对更新查询没有影响

return sequelize.transaction(function (t) {

    // chain all your queries here. make sure you return them.
    return yourModel.update(updates,{where: { 'id': id } },
        {transaction: t}).then(function (entries) {
             // your logic with your entries.
      });

}).then(function (result) {
    // Transaction has been committed
    cb(null,result);
    console.log('transaction commited');
}).catch(function (err) {
    // Transaction has been rolled back
    cb(err,null);
    console.log('Transaction rolled back');
});

如果你对添加时发生的事情感到好奇,那么延迟100。。。语句使用catch block,因为当您找到与预期不同的条目时,这是因为查询已无法更新。

您的数据库设置是什么?乍一看,这似乎是一个缓存问题。因此,如果您在上面执行的更新操作成功,then块显然会解决问题。因此,不需要模拟延迟。因此,问题在于您正在查询的表。我可以看看您是如何定义表的模式和模型的吗?这样,问题就可以解决了。@Olumide我更新了我的帖子。@Yoshimitsu我更新了我的帖子。我会在事务中尝试进行更新。
return sequelize.transaction(function (t) {

    // chain all your queries here. make sure you return them.
    return yourModel.update(updates,{where: { 'id': id } },
        {transaction: t}).then(function (entries) {
             // your logic with your entries.
      });

}).then(function (result) {
    // Transaction has been committed
    cb(null,result);
    console.log('transaction commited');
}).catch(function (err) {
    // Transaction has been rolled back
    cb(err,null);
    console.log('Transaction rolled back');
});