Mongoose: μž„μ˜μ˜ ν‚€κ°€ μžˆλŠ” κ°œμ²΄μ— ν¬ν•¨λœ λ¬Έμ„œ?

에 λ§Œλ“  2012λ…„ 01μ›” 12일  Β·  40μ½”λ©˜νŠΈ  Β·  좜처: Automattic/mongoose

미리 κ²°μ •λœ ν‚€κ°€ μ—†λŠ” 개체 λ‚΄μ—μ„œ ν¬ν•¨λœ λ¬Έμ„œλ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ? ie λ‹€μŒκ³Ό 같은 μƒν™©λ³΄λ‹€λŠ”:

var myschema = new mongoose.Schema({
   field : { foo: String, bar: String }
});

λ‹€μŒκ³Ό 같이 말할 수 μžˆμŠ΅λ‹ˆλ‹€.

var myschema = new mongoose.Schema({
   field : { *: String }
});

그런 μ‹μœΌλ‘œ 배열을 쑰금 더 λ§Œλ“­λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ•„μ΄λ””μ–΄λŠ” ν‚€λ₯Ό 미리 μ•Œμ§€ λͺ»ν•˜μ§€λ§Œ μ—¬μ „νžˆ ν¬ν•¨λœ λ¬Έμ„œλ₯Ό κ°€μ§ˆ 수 있기λ₯Ό μ›ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

enhancement

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 κΈ°λŠ₯은 ν•„μˆ˜μž…λ‹ˆλ‹€.

λͺ¨λ“  40 λŒ“κΈ€

μ—†κΈ°.

Mixed μœ ν˜•μ€ μ–΄λ–»μŠ΅λ‹ˆκΉŒ?

@aheckmann - 그것이 λ‚΄κ°€ λ‘λ €μ›Œν–ˆλ˜ κ²ƒμž…λ‹ˆλ‹€. 이것이 λ‘œλ“œλ§΅μ— μžˆλŠ”μ§€ μ•„λ‹ˆλ©΄ 이것이 널리 ν•„μš”ν•˜μ§€ μ•Šμ€ 것인지 μ•Œκ³  μžˆμŠ΅λ‹ˆκΉŒ?

@TooTallNate - λ§žμŠ΅λ‹ˆλ‹€. κΈ°λ³Έκ°’μž…λ‹ˆλ‹€. λ¬Έμ œλŠ” ν˜Όν•©μ„ μ‚¬μš©ν•˜λ©΄ μ§€μ›λ˜λŠ”(λͺ…λͺ…λœ ν‚€ 및 λ°°μ—΄) ν¬ν•¨λœ λ¬Έμ„œλ‘œ 얻을 수 μžˆλŠ” λͺ¨λ“  μœ νš¨μ„± 검사/μŠ€ν‚€λ§ˆ ν•­λͺ©μ„ μžƒκ²Œ λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

@ordrin 아무도 전에 그것을 ν•„μš”λ‘œν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€

μ’‹μ•„, λ‚΄κ°€ κ·Έλ ‡κ²Œ λ‚œν•΄ν•œ 일을 ν•˜κ³  μžˆλŠ”μ§€ λͺ°λžμ–΄! μ  μž₯.

λ‚˜λŠ” 이것에 λŒ€ν•œ μ‚¬μš© 사둀가 있으며 적어도 그것이 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

ACL μ‹œμŠ€ν…œμ„ λ§Œλ“€κ³  μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄ μž‘μ—…μ—λŠ” λ¬Έμžμ—΄μΈ _idκ°€ μžˆμŠ΅λ‹ˆλ‹€.

κ·Έ IDλ₯Ό λ‚΄ νšŒμ›μ˜ νšŒμ› λ ˆμ½”λ“œ(그듀이 ν•  수 μžˆλŠ” μž‘μ—…μ˜ λ°°μ—΄)에 ν¬ν•¨ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘  "tasks" 속성에 λ¬Έμžμ—΄ 배열을 넣을 수 μžˆμ§€λ§Œ μ΄μƒμ μœΌλ‘œλŠ” 이 μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ DBrefλ₯Ό μ‚¬μš©ν•˜μ—¬ 메타데이터λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

@ordrin 방금 λ‹€μ‹œ μ½μ—ˆμŠ΅λ‹ˆλ‹€. Mixed μ‚¬μš©μ„ λ³΄μ•˜μŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” b/ciκ°€ "μž„λ² λ””λ“œ λ¬Έμ„œ"λ₯Ό MongoDBκ°€ μ°Έμ‘°ν•˜λŠ” 방식과 λ‹€λ₯΄κ²Œ μƒκ°ν•œλ‹€κ³  μ˜€ν•΄ν–ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 일반적으둜 ν˜Όν•©μœΌλ‘œ ν•  수 μžˆλŠ” μž‘μ—…μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

var myschema = new mongoose.Schema({
   field : mongoose.Schema.Types.Mixed
});

이것은 κ·€ν•˜κ°€ μš”μ²­ν•œ 것과 맀우 κ°€κΉμŠ΅λ‹ˆλ‹€. 이 경우 "ν•„λ“œ"λŠ” λͺ¨λ“  값에 ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€. 개체 λ¦¬ν„°λŸ΄μ„ ν• λ‹Ήν•˜κ³  값이 λ¬Έμžμ—΄μΈμ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ μ‚¬μš©μž 지정 μœ νš¨μ„± 검사기λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

myschema.path('field').validate(yourCustomValidator, 'your custom vaildator failed msg');

function yourCustomValidator (value) {
  // check that value is an object etc
  return true|false
}

var M = mongoose.model('M', myschema);
var m = new M;
m.field = { might: "work", for: "you" }
m.save();

http://mongoosejs.com/docs/schematypes.html

λ‚˜λŠ” 이것과 λΉ„μŠ·ν•œ κΈ°λŠ₯을 μ°Ύκ³  μžˆλ‹€λŠ” 것을 μΆ”κ°€ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. κ°•λ ₯ν•œ ν˜•μ‹μ˜ μŠ€ν‚€λ§ˆ 값을 가진 동적 ν‚€λ₯Ό κ°–κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. μœ νš¨μ„± 검사λ₯Ό μˆ˜λ™μœΌλ‘œ μˆ˜ν–‰ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€λ©΄ ν™˜μƒμ μΌ κ²ƒμž…λ‹ˆλ‹€.

new mongoose.Schema({
    dynamicKey: {foo: Number, isAwesome: Boolean}
});

or 

new mongoose.Schema({
    dynamicKey: value is always only a Number
});

+1

+1

+1.

이 λ¬Έμ œμ™€ κ΄€λ ¨ν•˜μ—¬ SO κ²Œμ‹œλ¬Ό 을 κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€. 동적 ν‚€λ‘œ μ†μ„±μ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜λŠ” 쒋은 방법을 μ•Œκ³  μžˆλŠ” μ‚¬λžŒμ΄ 있으면 μ–Έμ œλ“ μ§€ κ²Œμ‹œν•΄ μ£Όμ„Έμš”.

λ‚΄μž₯ 된 경우 λ‹€μŒκ³Ό 같은 μŠ€ν‚€λ§ˆλ₯Ό λ ˆμ΄μ•„μ›ƒ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

new Schema({
  myDynamicKeyObj: {
    type: Dynamic, 
    key: {type: String, match: /[a-z]*/i}, 
    val: [String] 
  } 
})

+1

동적 ν‚€κ°€ 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€. json-schema λ₯Ό μž‘μ„±ν•˜λ €λ©΄ 예λ₯Ό λ“€μ–΄ μ •μˆ˜ ν‚€λ₯Ό μΌμΉ˜μ‹œν‚€κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같이 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

"^[0-9]+$": {
    "$ref": "#/definitions/mydefinition"
}

동적 ν‚€κ°€ μžˆκ±°λ‚˜ μ—†λŠ” μ†”λ£¨μ…˜μ΄ μžˆμŠ΅λ‹ˆκΉŒ?
2개 개체의 예:
{ 123: { firstname: "firstA", lastname: "lastA" } }
{ 124: { firstname: "firstB", lastname: "lastB" } }

같은 문제. mongodb λ¬Έμ„œμ— μ„€λͺ…λœ λŒ€λ‘œ 뢄석을 μˆ˜ν–‰ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. http://docs.mongodb.org/ecosystem/use-cases/pre-aggregated-reports/

+1

:+1:

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

λ‚˜λŠ” 이것이 우물이 ν•„μš”ν–ˆλ‹€

+1

μ‚¬λžŒλ“€μ˜ λ°›μ€νŽΈμ§€ν•¨μ„ 보게 λ˜λŠ” λ¬΄μ˜λ―Έν•œ +1을 μ€‘μ§€ν•˜μ„Έμš”.

"ꡬ독"κ³Ό "λ¦¬μ•‘μ…˜" λ²„νŠΌμ΄ μžˆλŠ” λ°μ—λŠ” μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€.

+1

@qqilihq , plxλ₯Ό κ΅¬ν˜„ν•œ λ‹€μŒ +1, kthxbyeλ₯Ό μ€‘μ§€ν•©λ‹ˆλ‹€.

"아무도 그것을 ν•„μš”λ‘œ ν•˜μ§€ μ•Šμ•˜λ‹€"
5λ…„ ν›„, μ—„μ²­λ‚œ +1이 μ§€λ‚¬μ§€λ§Œ μ—¬μ „νžˆ 이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μ—†μŠ΅λ‹ˆκΉŒ?

이 λ¬Έμ œμ™€ κ΄€λ ¨ν•˜μ—¬ 찾을 수 μžˆλŠ” κ°€μž₯ 였래된 λ¬Έμ œμ΄λ―€λ‘œ κ°€λŠ₯ν•œ ν•œ λ§Žμ€ μ‚¬λžŒλ“€μ΄ μ—…λ°μ΄νŠΈλ₯Ό 좔적할 수 μžˆλ„λ‘ 이 문제λ₯Ό λ‹€μ‹œ μ—΄κ³  #1522λ₯Ό λ‹«κ² μŠ΅λ‹ˆλ‹€.

이 κΈ°λŠ₯은 ν•„μˆ˜μž…λ‹ˆλ‹€.

이 κΈ°λŠ₯이 μ–΄λ–»κ²Œ κ·Έλ ‡κ²Œ 쑰용히 μΆœμ‹œλ˜μ–΄ λ‚˜λ„ λͺ°λžμ„κΉŒμš”?! πŸ’―

@adamreisnz γ…‹γ…‹ κ°μ‚¬ν•©λ‹ˆλ‹€. Mongoose κΈ°λŠ₯ μ—…λ°μ΄νŠΈλŠ” μ–΄λ””μ—μ„œ ν™•μΈν•©λ‹ˆκΉŒ? λ³€κ²½ 둜그? νŠΈμœ„ν„°?

일반적으둜 Changelogμ΄μ§€λ§Œ 이것을 놓쳀을 κ²ƒμž…λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰