set์ ๋์ํ๋ ์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ฉด ์ปฌ๋ ์ ๊ฐ์ฒด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ํ์ ๊ธฐ๋ฅ์ ์คํํ๋ "parse" ์ต์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฐ์ ธ์ค๊ธฐ ๊ธฐ๋ฅ์ ๊ฑฐ์น์ง ์๊ธฐ ๋๋ฌธ์ ์ปฌ๋ ์ ์ ๊ตฌ์ถํ๋ ค๋ ๋ถํธ์คํธ๋ฉ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ํธ๋ฆฌํฉ๋๋ค.
๋ชจ๋ธ ๊ฐ์ฒด๊ฐ ๋ณ๋ ฌ ์์ง์ ๋ํด ๋์ผํ ์ต์ ์ ์ ๊ณตํ์ง ์๋ ์ด์ ๊ฐ ์์ต๋๊น? ์๋ต๋๊ฒ ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํธ์ง: ์ถ๊ฐ ๊ฒ์ฌ ์ ์ฌ์ค์ ์ ์ฌ์ ํ โโ๊ตฌ๋ฌธ ๋ถ์ ์ต์ ์ ์ค์ํฉ๋๋ค.
๋๋ ์ด๊ฒ ์ ์ํ ๋ฅ๋ ฅ์ ๋ํด
๊ตฌํ์ ๋งค์ฐ ๊ฐ๋จํด์ผ ํฉ๋๋ค. ์ฃผ์ ์ง๋ฌธ์ ๊ทธ๋ ์ง ์์ ์ด์ ๊ฐ ์๋์ง ์ฌ๋ถ์ ๋๋ค. ๋ํ ์์ฑ ๊ฐ์ฒด ๋์ ํค val์ด ์ ๊ณต๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
์ด๊ฒ์ ์ข์ ๊ฒ ๊ฐ์ง๋ง ๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์ ๊ฑธ๋ฆผ๋์ด ๋๋ ๊ฒฝ์ฐ๋ parse
์ ํจ๊ป defaults
parse
์
๋๋ค( ์ฌ๊ธฐ์ ์ด๋ฒคํธ ์์๋ฅผ ํ์ธํ์ญ์์ค ). ๊ตฌํ์ ๋ํ ์๊ฐ์ด ๋ด๊ธด PR์ ๋ณด๊ณ ์ถ์ต๋๋ค.
์ข์ต๋๋ค. ํ ๋ฒ ์ฐ๋ฌ๋ณด๊ณ ์ถ์ต๋๋ค.
๋๋ ์ค์ ๋ก ์ด๊ฒ์ ๋ํ ํฐ์ผ์ ์ด๋ ค๊ณ ํ์ผ๋ #2013์ ๋ฐ๊ฒฌํ์ต๋๋ค... Collection#set
๊ฐ ์๊ธฐ ์ ์ด๋ผ๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
๋๋ API ํจ๋ฆฌํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ข์ ๊ฒ์ด๋ผ๊ณ @wookiehangover์ ๋์ํ๊ณ , ๋ ๊ทธ๋ฅ ์ฌ์ฉํ๊ณ (์ค์ฒฉ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๊ตฌ๋ฌธ ๋ถ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค ๊ฒฝ์ฐ ๊ฑด๋ ํ model.set(model.parse(data))
์์ ์ธ๊ธ ํ ๋ฐ์ ๊ฐ์ด ๋ค๋ฅธ ํฐ์ผ).
@tgrisser ์ด๋ป๊ฒ ๊ทธ ๋ฌธ์ ๋ฅผ ๋์ณค๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค! ๋๋ ๊ทธ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ๋
ผ์์ ๋์ํ์ง๋ง ๋ ๊ฐ๋ ฅํ ์ฌ์ฉ ์ฌ๋ก๋ ๋ถํธ์คํธ๋ฉ๋ ๋ฐ์ดํฐ(๋ดํฌ๋ ๊ตฌ๋ฌธ ๋ถ์๋ ์ํํ๊ณ ์์)๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ฐ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง๋ง Collection#set
๊ฐ ์์ผ๋ฏ๋ก ์ด์ ํจ๋ฆฌํฐ ์ธ์๋ ์์ต๋๋ค.
์ด๊ฒ์ด ํ์ํ ์ค์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์ ๋๊น?
๋น์ ์ ํตํ ํ ๊ฒฝ์ฐ set
๊ฐ์ฒด๊ฐ ๋น์ ์ด ๋ชจ๋ธ์ ๋น๊ธฐ ๋ ๊ฑฐ๋ผ๊ณ ์ค์ฒฉ ๋ ๋ฐ์ดํฐ๊ฐ์๋ ๋ชจ๋ธ์ด ์กด์ฌํ๋์ parse
. ์ ๋ ์ด ๊ธฐ๋ฅ์ ์ฌ๋ฌ ๋ฒ ์ํ์ต๋๋ค.
class Book extends Models.Document
constructor: ->
<strong i="8">@info</strong> = new InfoModel()
<strong i="9">@chapters</strong> = new ChaptersCollection()
super
parse: (attrs, options) ->
@info.set(attrs.info, options)
@chapters.set(attrs.chapters, options)
_.omit(attrs, 'info', 'chapters')
์ด์ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
book.set({
title: 'title',
info: {
some: data
someNested: {
otherData: ...
}
},
chapters: [{...}, {...}]
}, {parse: true});
์๋ํด์ผ ํฉ๋๋ค... (์, model.set(model.parse(
์๋ํ์ง๋ง ์ปฌ๋ ์
๋ฐ ๋ชจ๋ธ์ ์ค์ฒฉ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐ ๋์ผํ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํฉ๋๋ค.)... #2623์ ๋ฌธ์ ์์๋ ์ง๊ธ๊น์ง ์๋ํฉ๋๋ค. ์๋์.
์ด ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ๋ณธ๊ฐ๊ณผ ํจ๊ป ์ด๋ป๊ฒ ์๋ํ๋์ง ์๊ฐํด ๋ณธ ์ฌ๋์ด ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ์ด์ค ๊ตฌ๋ฌธ ๋ถ์ ์์ด?
๊ธฐ๋ณธ๊ฐ๊ณผ ํจ๊ป ์๋ํ๋๋ก ํ๊ธฐ ์ํด set
์ ์ ๋ฌํ๋๋ก ์ด๊ธฐํ ํจ์์ ํ ๋น๋ options.defaults
์์ฑํ์ฌ ๊ตฌ๋ฌธ ๋ถ์ ๋จ๊ณ ํ์ ์ ์ฉํ ์ ์๋๋ก ํ์ต๋๋ค. ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋์์ธ ๊ฒฐ์ ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋์ฒด ์๋ฃจ์
์ ์๊ฐํ ์ ์์์ต๋๋ค.
์ด ๋ํ๋ฅผ ๊ณต๊ฐ PR๋ก ์ฎ๊ธฐ์...
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
parse ์ต์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก model.set(model.parse(data)) ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ collection.reset ๋ฑ๊ณผ์ ์ผ๊ด์ฑ์ ์ํด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
parse ์ต์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก model.set(model.parse(data)) ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ collection.reset ๋ฑ๊ณผ์ ์ผ๊ด์ฑ์ ์ํด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค.