2013-07-02 47 views

回答

1

這是一個有效的JSON,但無效的Mongoose Schema。由於貓鼬」方法允許路徑導航,如果您有類似

{ 
    'some.path': 'foo', 
    'some': { 
    'path': 'bar' 
    } 
} 

如果不是因爲這個‘缺點’,像document.get('some.path')方法不知道得到什麼。

這並不意味着你不能使用點與貓鼬有史以來。您可以將JSON作爲值:

Schema = new mongoose.Schema({ 
    'some': { 
     'path': { 
      'json': {} //any js object 
     } 
    } 
}) 
Model = mongoose.model(Schema) 
document = new Model() 
document.some.path.json = {'inner.data': 'foo'} 

呦可以通過純document.some.path.json['inner.data']訪問數據,但你將無法進一步使用document.get()與路徑參數比'some.path.json'因爲這架構路徑從貓鼬」的觀點是終奌站。您也將受限於您如何查詢此類字段的方式

所有貓鼬文檔都基於JSON,但它們不是它的超集。

0

是的。據我所知,有效的JSON沒有點。 你所應該做的是這樣的:

{ 
    "character": { 
    "treasure_chests": 1 
    } 
} 

下面是一個例子:JSON Schema example

3

我很有信心像:

{"foo.com": 2} 

其實是有效的JSON。關鍵只是一個字符串。

http://jsonlint.com/不會抱怨,我可以在任何喜歡的地方愉快地使用它,除非我嘗試將它分配到貓鼬模式(和其他一些地方)中的混合屬性。

你可以看到它在這個litlle提琴工作:http://jsfiddle.net/gBgB6/1/

有時候,我想通過的keyPath存儲的值{「foo.baz」:0},我想作爲一個指針使用mongo文檔之外的JavaScript對象中的一個鍵。我不想將它存儲在蒙戈嵌套形式,但我也不想重新映射它像

{key:"foo.baz", 
value: '0' 
} 

我想了幾次我可能訴諸存儲值表的映射點(。)轉換爲另一個字符。

在我看來,貓鼬是短暫的。我可能會問:)。