2017-12-16 16 views
0

내 모델의 grade 스키마 속성을 다른 모델의 id으로 참조하려고합니다. 그러나 내가 그것을 null으로 유지하고 싶은 경우가 있습니다. 나는 null로 기본을 유지하기 위해 노력하고 노력하지만, 나는 다음과 같은 오류가 발생합니다 :기본 null이있는 몽구스 스키마 참조 값

ValidationError: User validation failed: grade: Cast to Array failed for value "" at path "grade" 

는 IS 다음 내 코드 :

import * as mongoose from 'mongoose'; 
const userSchema = new mongoose.Schema({ 
    username: String, 
    email: { type: String, unique: true, lowercase: true, trim: true }, 
    password: String, 
    school: { type: String, default: null }, 
    mobile: Number, 
    grade: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Grade', default: null }], 
    role: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Role' }], 
    company: { type: String, default: null }, 
    designation: { type: String, default: null }, 
    active: { type: Number, default: 2 }, 
    url: { type: String, default: null }, 
    admin: { type: Number, default: 0}, 
    created: { type: Date, default: Date.now }, 
    last_active: { type: Date, default: Date.now } 
}); 
const User = mongoose.model('User', userSchema); 
export default User; 

은 참조하지만 내가 null으로 기본 값을 유지 할 수있는 방법이 있나요 그것?

답변

1

MongoDB 또는 NoSQL 데이터베이스에서 Schemaless 아키텍처를 기반으로하므로 NULL을 기본값으로 설정할 필요는 없지만 관계형 데이터베이스에서는이를 할 수 있습니다. 필드에 값이 없다면이 열은이 행에 없어야합니다. 스키마의 2 행에 대한 그 예를 아래에

확인 : 당신은 NULL로 관계형 데이터베이스 학교에서 다른 이름으로 저장

{username: "jack", email: "[email protected]", password: "123"} 
{username: "msoliman", email: "[email protected]", password: "123", school: "AB"} 

당신이 첫 번째 행에서 모든 학교가없는 알이 정확히 동일합니다.

나는 이것이 내 뜻을 이해하는 데 도움이되기를 바랍니다. 그렇지 않다면 의견을 남겨주세요. 도움이된다면 내 대답을 평가하는 것을 잊지 마시기 바랍니다.

+0

을 너 무슨 뜻이야? 포인터 주셔서 감사! 나는 그것을 해결할 수 있었지만 UI에서 데이터를 전달하지 못해 null로 저장되었습니다. 감사! – JackSlayer94

0

NoSQL은 값을 사용할 수 있으면 스키마에 저장되므로 다른 방법으로는 고려하지 않습니다. 그래서 당신은이 있거나 다른 사람이
기본값으로 걸릴 수 있습니다 요구하여 위의 스키마의 역할을 수행대로 값을하지있을 수 있습니다 당신의 키를 정의하려면 : '', 이해

school: { type: String, default: '' }