我有一些jQuery逻辑设置,用户可以在其中提交多个字段值,这些字段值应该作为我的数据库中的单个记录创建。我以前解决这个问题的方法是将我的值映射到一个随后与.bulkCreate
方法一起使用的变量,但我不知道MYSQL不支持使用此方法自动递增字段。结果我决定采用我的逻辑,而是使用.create
方法创建一个for循环。很遗憾,我在第TypeError: this.build(...).save is not a function
行收到此错误消息:models.DiscoverySource.create(sources)
。当我没有使用构建方法时,为什么会显示此消息?
.post(function(req, res){
console.log(req.body.discoverySource);
var sources = _.map(req.body.discoverySource, function (source) {
return {
discoverySource: source,
organizationId: req.body.organizationId
};
});
console.log("These are the" + sources); //outputs "These are the [object Object],[object Object], [object Object]
console.log(sources[0].discoverySource); //outputs correctly first value
console.log(sources[0].organizationId); //outputs correctly the first value
for (i=0; i < sources.length; i++){
models.DiscoverySource.create(sources)
.then(function(){
return models.DiscoverySource.findAll();
}).then(function(discoverySource){
console.log(discoverySource);
res.redirect('/app');
}).catch(function(error){
res.send(error);
console.log('Error during Post: ' + error);
});
}
});
答案 0 :(得分:3)
create
方法无法接受对象数组。
如果您需要ID,并且需要等到创建所有对象,您将需要等待所有单独的create
承诺:
var promises = sources.map(source => models.DiscoverySource.create(source));
Promise.all(promises)
.then(() => models.DiscoverySource.findAll())
.then(discoverySource => {
console.log(discoverySource);
res.redirect('/app');
}).catch(error => {
res.send(error);
console.log('Error during Post: ' + error);
});