2015-02-11 70 views
0

我已看過這個問題(Is there a native feature to convert string based JSON into Mongoose Schema object instance?),它與我的問題有關,但並不完全符合我的要求。將JSON轉換爲Mongoose Schema來調用Schema方法

本質上,我有JSON我從快速響應中獲取,我想將它轉換爲Mongoose對象,用於在對象上調用模式方法。

我的模式看起來是這樣的:

var BlahSchema = new Schema({ 
    folder: String, 
    filename: String, 
    original: String 
}); 
... 
// This is the function I wish to cal 
BlahSchema.virtual('url').get(function() { 
    ... 
}); 

據我瞭解,當我有一個對象匹配BlahSchema,我可以通過一個簡單的object.url調用該方法。

我有兩個問題。首先,我從檢索這些對象的JSON中刪除他們的模式,對吧?我通過Blah.search(...function(err, blahs))從數據庫中檢索這些數據。這一切都被編碼成一個JSON對象,我通過callback(req, res, search_result)返回,其中search_result是通過search_result.blahs = blahs等創建的對象。有沒有什麼辦法來保持這種跨呼叫架構?這將是首選的方法。其次,如果上述不可行,我如何在不使用上面提到的問題的答案中提到的save()函數的情況下將JSON重新投射到模式?我不想重新添加對象到數據庫;我只想使用爲該模式定義的方法。

編輯:表達很生病。所有你需要做的是blah(object).method_name,其中blah = mongoose.model('blah')

回答

3

我將用戶(模式)對象保存爲以純JSON格式重新發布。

獲取用戶數據(串),並將其解析成JSON對象:

var user = new User(JSON.parse(userData)) 

...你有你的用戶架構中的所有方法。

+0

我認爲這也適用。不知道是否有額外的開銷基於'新'或不。 – djbhindi 2015-04-07 23:09:01

+1

爲什麼會有?它只是爲執行函數提供一個新的上下文(全新對象)以用於「this」調用。 – kboom 2017-01-10 11:36:53