Postgres“为每个” RangeError:超出最大调用堆栈大小

时间:2019-09-09 09:38:35

标签: javascript node.js postgresql

我正在使用sequelize,并且我有一个使用findOrCreate的函数,尽管有时添加了条目,但它似乎抛出并出错了“ RangeError:超出最大调用堆栈大小”。

我使用的代码如下,我在传递6个提示。有谁知道发生了什么事以及如何解决/预防此事?

?s = <http://x>

我的模特:

exports.sqlAddTags = async function(did, tids) {
    try {
        await sequelize.authenticate();
        const promises = [];
        tids.forEach(t =>{
            console.log(did, t)
            promises.push(FB_Tag.findOrCreate({
                where: {
                    did: did,
                    tid: t
                }
            }));
        });
        return await Promise.all(promises);
    } catch (e) {
        console.log(e.message)
    }
};

编辑:似乎只有1个tid,它也会引发此错误

如果该项目已经存在,我似乎会收到此消息。不确定这是否正常?

FB_Tag.init({
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    did: {
        type: Sequelize.STRING,
        allowNull: false,
    },
    tid: {
        type: Sequelize.STRING,
        allowNull: false
    },
}, {
    sequelize,
    modelName: 'fb_tag',
    timestamps: false
});

我用与上面相同的逻辑创建了一个测试脚本,该脚本可以正常工作,所以我只能将其归结为该函数的调用方式。

CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response "public"."fb_tags", OUT sequelize_caught_exception text) RETURNS RECORD AS $func_66aef14340b2417dabf18d3cdfafa589$ BEGIN INSERT INTO "public"."fb_tags" ("i
d","did","tid") VALUES (DEFAULT,'jcBUnwocFS9I7RekMZHJ','7AQS1zPkLIUsSfx8lC0a') RETURNING * INTO response; EXCEPTION WHEN unique_violation THEN GET STACKED DIAGNOSTICS sequelize_caught_exception = PG_EXCEPTION_DETAIL; END $func_66aef14340b2417dabf18d3cdfafa589$ LANG
UAGE plpgsql; SELECT (testfunc.response).*, testfunc.sequelize_caught_exception FROM pg_temp.testfunc(); DROP FUNCTION IF EXISTS pg_temp.testfunc();

0 个答案:

没有答案