如何从sequelize中选择插入

时间:2015-05-15 13:38:35

标签: insert sequelize.js

我们在节点js上使用sequelize 我有资源文件。文件具有UserId属性。 需要:将相同的文件(通过filesId)复制到用户。 如果使用sql则需要执行:

INSERT INTO files (name, link, userId) SELECT name, link, 5 FROM files WHERE id in (1,2,3,4,10)

但是如何在续集中我没有任何想法......只有自定义的SQL查询。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

File.findAll({
  where: {id: {$in: [1,2,3,4,10]}}
}).then(function(filesSeq)){
  //make file objects with UserId=5
  var files = filesSeq.map(function(fileSeq){
    var file = fileSeq.toJSON();
    file['UserId'] = 5;
    return file;
  });
  return File.bulkCreate(files)
}).then(function(files){
   //do something with created files
});

答案 1 :(得分:0)

您可以使用 sequelize.query() 运行原始查询。

await sequelize
.query(
    `INSERT INTO files (name, link, userId) 
     SELECT name, link, 5 FROM files WHERE id in (1,2,3,4,10)`
)
.then((r) => r)
.catch((err) => {
    throw err;
});