2014-05-05 57 views
0

我有一些記錄集合,它們具有某些特定屬性,我需要內部使用,但是當我將結果發送回用戶時,我希望這些屬性重新排列。Mongoose - 更改查詢結果記錄的內容

具體而言,我有一個geo陣列,我想分解成latlng屬性。

我正在使用Mongoose,並想知道在搜索過程中是否有一種方法在記錄結果中使用pre/post掛鉤(我已將它用於「保存」),以便在返回結果之前修改記錄。

所以,在DB,如果我們有:

{ 
    name: 'Foo Bar', 
    geo: [-0.12, 32.17] 
}, 
{ 
    name: 'Pizza', 
    geo: [-0.09, 34.51] 
} 

從查詢的結果將是:

{ 
    name: 'Foo Bar', 
    lat: 32.17, 
    lng: -0.12 
}, 
{ 
    name: 'Pizza', 
    lat: 34.51, 
    lng: -0.09 
} 

任何想法如何做到這一點?

回答

1

是的,你的模型定義使用post-init事件來完成這個轉換。這裏更多的信息: http://mongoosejs.com/docs/middleware.html#post

Schema 
    .post('init', function (doc) { 
     //do your stuff 

    }) 
+0

芭你好,感謝您的回覆。你能否給我一個關於我如何處理doc對象的例子。我是否開始添加屬性並刪除我不希望用戶看到的內容?這個效果會搜索嗎? –

+0

Doc是您需要修改的文檔/模型。你可以根據你的需要添加屬性,除非你聲明它們,否則它們不是你的Mongoose模型的一部分,但是爲了你需要的東西,我懷疑你只想格式化返回的對象以符合你的規格。每個搜索結果都會調用.post-init,讓您的文檔能夠滿足您的需求。 – Biba