Sequelize bulkCreate()가 기본 키에 대한 NULL 값을 반환합니다.
나는 노드를 사용하여 rest를 작성하고 있으며, 나의 SQL에 대한 ORM으로 속편화합니다.bulkCreate 함수를 사용하여 대량으로 레코드를 만들고 있습니다.그러나 이에 대한 응답으로 기본 키 값에 대해 null을 반환합니다.
모델
sequelize.define('category', {
cat_id:{
type:DataTypes.INTEGER,
field:'cat_id',
primaryKey: true,
autoIncrement: true,
unique:true
},
cat_name:{
type: DataTypes.STRING,
field: 'cat_name',
defaultValue:null
}
});
대량 생성 작업:
var data = [
{
'cat_name':'fashion'
},
{
'cat_name':'food'
}
];
orm.models.category.bulkCreate(data)
.then(function(response){
res.json(response);
})
.catch(function(error){
res.json(error);
})
응답:
[
{
"cat_id": null,
"cat_name": "fashion",
"created_at": "2016-01-29T07:39:50.000Z",
"updated_at": "2016-01-29T07:39:50.000Z"
},
{
"cat_id": null,
"cat_name": "food",
"created_at": "2016-01-29T07:39:50.000Z",
"updated_at": "2016-01-29T07:39:50.000Z"
}
]
설정해야 합니다.returning옵션:
Model.bulkCreate(values, {returning: true})
MySQL에서 테스트됨:
Model.bulkCreate(values, { individualHooks: true })
var data = [
{
'cat_name':'fashion'
},
{
'cat_name':'food'
}
];
Model.bulkCreate(data)
.then(function() {
//(if you try to immediately return the Model after bulkCreate, the ids may all show up as 'null')
return Model.findAll()
})
.then(function(response){
res.json(response);
})
.catch(function(error){
res.json(error);
})
성공 처리기는 일련의 인스턴스를 전달하지만, 이러한 인스턴스가 DB에 있는 행의 상태를 완전히 나타내지 않을 수도 있습니다.MySQL 및 SQLite는 여러 레코드에 매핑할 수 있는 방식으로 자동으로 생성된 ID 및 기타 기본값을 쉽게 다시 가져올 수 없기 때문입니다.새로 만든 값에 대한 인스턴스를 가져오려면 인스턴스를 다시 쿼리해야 합니다.http://docs.sequelizejs.com/en/latest/api/model/ #messages 레코드를 생성할 수 없습니다. 레코드를 생성할 수 없습니다. 어레이 인스턴스를 생성할 수 없습니다.
안타깝게도 최신 버전에서는 작동하지 않습니다.그들은 다음과 같은 이유를 설명합니다. http://sequelize.readthedocs.org/en/latest/api/model/ #messages create 레코드-contract-array 인스턴스
설명에는 mysql이 구체적으로 언급되어 있습니다.당신은 그들에게 문의해야 할 것입니다.(포함 항목:var _ = require('lodash');
var cat = rm.models.category;
cat.bulkCreate(data)
.then(function (instances) {
var names = _.map(instances, function (inst) {
return inst.cat_name;
});
return cat.findAll({where: {cat_name: {$in: names}});
})
.then(function(response){
res.json(response);
})
.catch(function(error){
res.json(error);
});
설명서에서: 이러한 행이 DB에 있는 행의 상태를 완전히 나타내지 않을 수 있습니다.MySQL 및 SQLite는 여러 레코드에 매핑할 수 있는 방식으로 자동으로 생성된 ID 및 기타 기본값을 쉽게 다시 가져올 수 없기 때문입니다.새로 만든 값에 대한 인스턴스를 가져오려면 인스턴스를 다시 쿼리해야 합니다.http://docs.sequelizejs.com/class/lib/model.js ~Model.html#static-method-bulkCreate
하지만 당신은 그것이 ID를 돌려주도록 하는 옵션을 통과할 수 있습니다.
orm.models.category.bulkCreate(data, { returning: true })
var data = [{
'cat_name':'fashion'
},
{
'cat_name':'food'
}
];
orm.models.category.bulkCreate(data,{individualHooks: true})
.then(function(response){
res.json(response);
})
.catch(function(error){
res.json(error);
});
언급URL : https://stackoverflow.com/questions/35079286/sequelize-bulkcreate-returns-null-value-for-primary-key
'source' 카테고리의 다른 글
| MySQL 동시성, 작동 방식 및 응용 프로그램에서 처리해야 합니까? (0) | 2023.09.05 |
|---|---|
| BIGINT 서명되지 않은 값이 범위를 벗어났습니다. My SQL (0) | 2023.09.05 |
| XmlHttpRequest 개체를 재사용해야 하는 이유는 무엇입니까? (0) | 2023.09.05 |
| Oracle: 10g 오라클 클라이언트는 11g 서버와 함께 작동합니까? (0) | 2023.09.05 |
| 오류 작업 기본 설정 및 오류 작업 Get-PSession 구성을 위해 자동으로 계속합니다. (0) | 2023.09.05 |