* 대신 Sequelize(NodeJS)를 사용하여 특정 필드 지정
좋아요, 그럼 제가 Node에 프로젝트가 있습니다.JS에서는 MySQL ORM용 Sequelize를 사용하고 있습니다.이 기능은 훌륭하지만 쿼리 기반으로 반환되는 필드를 지정하는 방법이 있는지, 아니면 .query()를 실행하는 방법까지 있는지 알아보려고 합니다.
예를 들어 사용자 데이터베이스에는 엄청난 양의 기록과 열이 있을 수 있습니다.이 경우 3개의 열만 반환해야 하므로 해당 열만 가져오는 것이 더 빠릅니다.그러나 Sequelize는 테이블에서 모든 "*"에 대해 쿼리하여 가능한 한 완전한 객체 모델을 구현합니다.이것은 어플리케이션의 이 영역에서 생략하고 싶은 기능입니다.
findAll()에 전달할 오브젝트 속성으로 속성을 지정해야 합니다.
Project.findAll({attributes: ['name', 'age']}).on('success', function (projects) {
console.log(projects);
});
발견 방법:
이 쿼리는 처음에 https://github.com/sdepold/sequelize/blob/master/lib/model-definition.js#L131 에서 호출됩니다.
다음으로 https://github.com/sdepold/sequelize/blob/master/lib/connectors/mysql/query-generator.js#L56-59 에서 작성됩니다.
새로운 버전으로 시험해 보십시오.
template.findAll({
where: {
user_id: req.params.user_id
},
attributes: ['id', 'template_name'],
}).then(function (list) {
res.status(200).json(list);
})
속성 키의 배열을 사용합니다.별칭에 대해 중첩된 배열을 수행할 수 있습니다.
Project.findAll({
attributes: ['id', ['name', 'project_name']],
where: {id: req.params.id}
})
.then(function(projects) {
res.json(projects);
})
산출량:
SELECT id, name AS project_name FROM projects WHERE id = ...;
모든 답변이 맞지만include
그리고.exclude
뿐만 아니라.
Model.findAll({
attributes: { include: ['id'] }
});
Model.findAll({
attributes: { exclude: ['createdAt'] }
});
언급URL : https://stackoverflow.com/questions/8039932/specifying-specific-fields-with-sequelize-nodejs-instead-of
'programing' 카테고리의 다른 글
클래스 메서드 내에서 함수를 호출하시겠습니까? (0) | 2023.01.28 |
---|---|
네스트된 디렉토리를 안전하게 작성하려면 어떻게 해야 합니까? (0) | 2023.01.28 |
유니코드 문자열을 Python 문자열로 변환(추가 기호 포함) (0) | 2023.01.19 |
'풀 수 있는 값이 너무 많다'는 식으로 반복됩니다.key=> 문자열, 값=> 목록 (0) | 2023.01.19 |
어떻게 하면 모든 것을 특정 캐릭터를 따라잡을 수 있을까요? (0) | 2023.01.19 |