我们在节点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查询。
答案 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;
});