sails/waterline은 내 모델에서 배열의 요소가 string 유형을 사용하도록하는 선언적 방법을 제공합니까? 또는이 유효성 검사를 수행하는 코드를 작성해야합니까?Sails/Waterline에있는 문자열의 배열이있는 모델
답변
지금까지 모델 선언에서 이렇게 할 방법이 없다는 것을 알 수있었습니다. 그러나 "beforeValidate"콜백에서 쉽게 수행 할 수 있습니다. 당신이 코드의 의견에주의 경우
오류를 트리거 라이프 사이클 콜백의 콜백에 아무것도 전달 here 니펫을, 그래서이 코드 약간은 당신이 당신의 배열은 문자열이 포함되어 있는지 확인하는 데 필요한 모든 것입니다 :
beforeValidate: function (values, cb) {
values.arrOfStrings.forEach(function(str) {
if (typeof(str) != "string") {
cb("err: arrOfStrings must contain only strings");
}
}
cb()
}
합니다 (Waterline readme에 설명) 모델에 사용자 정의 유형을 추가하여 수행 할 수 있습니다 것으로 보인다 :
module.exports = {
types: {
stringArray: function(array){
if (!Array.isArray(array)) {
return false;
} else {
return array.every(function (value) {
return typeof(value) === "string"
});
}
}
},
attributes: {
someArrayOfStrings : {
type: 'array',
stringArray: true
}
}
};
사용자 정의 유효성 검사 코드가 필요하지만 적어도이 방법은 작동 유효성 검사 엔진을 사용하고 모델에서 선언적 유효성 검사를 허용합니다.
배열 유형이 약간의 더미가 아닙니까? 언제마다 사용되는 유형을 확인해야합니다. : / – Kefka
으로 HolySamosa는 지적했다 (하지만 난 마지막에 문서에서 더 많은 특정 페이지를 첨부합니다)
정의하는 검증
당신은 당신의 자신의 종류와 유형과의 검증을 정의 할 수 있습니다 목적. 값에 액세스하여 다른 속성과 비교할 수 있습니다. 이를 통해 유효성 검증 비즈니스 로직을 모델 및 컨트롤러 로직으로 옮길 수 있습니다.
var User = Waterline.Collection.extend({
types: {
point: function(latlng){
return latlng.x && latlng.y
},
password: function(password) {
return password === this.passwordConfirmation;
});
},
attributes: {
firstName: {
type: 'string',
required: true,
minLength: 5,
maxLength: 15
},
location: {
type: 'json',
point: true
},
password: {
type: 'string',
password: true
},
passwordConfirmation: {
type: 'string'
}
}
});
그래서 위의 예에서와 같이, 당신은뿐만 아니라 HolySamosa의 기능을 사용할 수 있습니다. 그래서 가능성이 두 콜백 비동기 당신이`forEach`을 사용하고
https://github.com/balderdashy/waterline-docs/blob/master/models/validations.md
- 1. Yii 2. 문자열의 모델 사용
- 2. 배열이있는 배열
- 3. 배열이있는 preg_replace
- 4. 배열이있는 preg_replace_callback
- 5. 배열이있는 ListView
- 6. 배열이있는 str_replace
- 7. 배열이있는 NullPointerException
- 8. 배열이있는 Java의 if 루프에 대해
- 9. ASP.NET MVC 모델 바인더. 객체 배열이있는 컨트롤러를 호출하십시오.
- 10. iOS는 배열이있는 배열을 필터링합니다.
- 11. 배열이있는 ActiveRecord where_in()
- 12. 패턴 배열이있는 정규 표현식 (R)
- 13. 범위 데이터 배열이있는 AngularJS 지시문
- 14. 변수에 배열이있는 구조체 초기화
- 15. 연관 배열이있는 Flex TileList
- 16. 해시 배열이있는 배낭 DP
- 17. 문자열 배열이있는 strcmp()
- 18. 목록/배열이있는 팬더 채우기
- 19. 배열이있는 nsdictionary nspredicate 필터링
- 20. 배열이있는 쿼리와 비슷합니다.
- 21. 빈 배열이있는 UIPickerView
- 22. 배열이있는 정적 셀
- 23. PHP 배열이있는 Morris.js 차트
- 24. 원격 배열이있는 typeahead.js 트위터
- 25. 배열이있는 포인터 함수
- 26. 배열이있는 preg_replace 문자열
- 27. 배열에 배열이있는 movzx
- 28. 배열이있는 json 객체에 액세스합니다.
- 29. 배열이있는 PHP 스위치
- 30. 배열이있는 키 코드 이해
참고, 호출됩니다. JS 엔진은 forEach를 계속 진행하면서'cb()'를 호출하고, 배열의 마지막 항목이 부등호를 트리거합니다. 이제'cb'가 두 번 호출됩니다. 따라서 엔진을 완성 될 때까지 반복 상태로 유지하려면 'for (i)'루프를 리펙토링하십시오. – Cody