【问题标题】:Sequelize - Acceptable bulkCreate FormatSequelize - 可接受的批量创建格式
【发布时间】:2017-07-26 08:10:41
【问题描述】:

我的 bulkCreate 方法存在问题,我的数组中的值没有传递给 bulkCreate 方法,尽管是以正确的(或我认为的)JSON 格式发送的。难道是存储的变量在对象周围添加了''?

数组和对象设置代码如下:

return models.User.findAll({
                where: {
                    email: { $or: userEmails}
                }
            }).then(function(user){
                console.log('Member is triggered');
                console.log(user);

                for(var key in user){
                    memberAssociation.push("{ userId: " + user[key].userId + ", memberEmail: " + user[key].email + ", organizationId: " + user[key].organizationId + "}");


                 }

                    console.log('Here is the array ' + memberAssociation); 
})

输出console.log:

Here is the array { userId: 126, memberEmail: dsfdf@st.com, organizationId: 1},{ userId: 127, memberEmail: sdfsdf@4iof.com, organizationId: 1}

然后作为bulkCreate发送:

.then(function(member){
                console.log(memberAssociation);
                return models.Member.bulkCreate(memberAssociation).then(function(member){
                    console.log(member);
                    console.log('New member')
                    res.send('Success')
                });

输出(成员):

[ '{ userId: 126, memberEmail: dsfdf@st.com, organizationId: 1}',
  '{ userId: 127, memberEmail: sdfsdf@4iof.com, organizationId: 1}' ]

SQL:

Executing (default): INSERT INTO `member` (`member_id`,`created_at`,`updated_at`) VALUES (NULL,'2017-03-06 07:36:57','2017-03-06 07:36:57'),(NULL,'2017-03-06 07:36:57','2017-03-06 07:36:57');

这是我的完整 POST 路线:

  return models.User.findAll({
                where: {
                    email: { $or: userEmails}
                }
            }).then(function(user){
                console.log('Member is triggered');
                console.log(user);

                for(var key in user){
                    memberAssociation.push("{ userId: " + user[key].userId + ", memberEmail: " + user[key].email + ", organizationId: " + user[key].organizationId + "}");
                }

                console.log('Here is the array ' + memberAssociation);

            }).then(function(member){
                console.log(memberAssociation);
                return models.Member.bulkCreate(memberAssociation).then(function(member){
                    console.log(member);
                    console.log('New member')
                    res.send('Success')
                });

【问题讨论】:

    标签: json express sequelize.js


    【解决方案1】:

    原因是当您执行memberAssociation.push("...") 时,您将在每次迭代时将String 添加到您的memberAssociation 数组中,而不是对象。你应该每次都推送对象

    memberAssociation.push({
        userId: user[key].userId,
        memberEmail: user[key].email,
        organizationId: user[key].organizationId
    });
    

    然后您可以使用上面创建的数组执行bulkCreate,就像您在代码中所做的那样。 documentation 表示bulkCreaterecords 参数是一个对象数组:

    要从中创建实例的对象列表(键/值对)

    【讨论】:

    • 感谢您发现我的明显缺陷。完美运行。
    猜你喜欢
    • 2016-12-06
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2018-05-11
    • 2019-04-23
    • 2014-03-02
    相关资源
    最近更新 更多