json - Sequelize - 可接受的批量创建格式

标签 json express sequelize.js

我的 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')
                });

最佳答案

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

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

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

List of objects (key/value pairs) to create instances from

关于json - Sequelize - 可接受的批量创建格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42625928/

相关文章:

javascript - 错误: Can't set headers after they are sent when return jwt.验证

node.js - 如何让 express-basic-auth 提示弹出用户和密码?

javascript - 在 express js 的不同文件中访问相同的数据库连接实例

node.js - 如何在时间戳上使用 Sequelize 更新 'NOW()'?

javascript - 如何在 Node.js 中添加 promise.all Sequelize findOrCreate 循环?

javascript - 用于二进制 JSON(或类似格式)的可移植 PHP/Javascript 插件?

java - 在使用 Jackson 反序列化期间有选择地忽略 JSON 属性

javascript - s.replace 不是sequelize.fn 'AVG' 上的函数

java - 将 Decimal128 序列化为 JSON

javascript - 将多个 JSON 数组解析为 html