2016-04-09 53 views
4

Kullanıcıların birden çok alan değeri gönderebileceği jQuery mantıksal kurulumum var. Bu, veritabanımda bireysel kayıtlar olarak oluşturulmalıdır. Bunu yapmamdaki eski çözümüm, değerlerimi .bulkCreate yöntemiyle kullanılan bir değişkene eşlemek oldu, ancak MYSQL'in bu yöntemle otomatik artırım alanlarını desteklemediğinden habersizdim. Sonuç olarak, mantığımı almaya karar verdim ve bunun yerine .create yöntemiyle bir döngü oluşturmaya karar verdim. Ne yazık ki bu hata iletisini aldım: satırında TypeError: this.build(...).save is not a function. Yapılandırma yöntemini kullanmadığımda neden bu mesaj görünüyor?Sequelize TypeError build.save bir işlev değil

.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); 
     }); 
    } 
}); 

cevap

2

create yöntemi, bir nesne dizisini kabul edemez. Eğer kimliklerini gerekir ve tüm nesne oluşturulur kadar beklemek gerekiyorsa , tüm bireysel create sözlere beklemek gerekir:

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); 
}); 
İlgili konular