2014-07-11 68 views
0

我正在運行node.js服務器(使用快速& jade)和mongodb數據庫。我有一個使用findOne查詢mongodb的函數。該文檔是關於用戶以及具有其偏好的數組元素。所以模式看起來像這樣...mongodb findone返回值 - 數組操作

var userSchema = mongoose.Schema({ 

    username  : { type: String, index: true }, 
    preferences : [{ 
       _id : mongoose.Schema.ObjectId, 
       title : String, 
       color : String, 
       shape : String, 
       }] 
}); 


UserTabs.findOne({ 'username' : userID }, function(err, data) { 

//How do I manipulate data.preferences to change array order.... 
} 

我將data.preferences對象傳遞給jade並打印數組內容列表。

問題:內findOne功能我怎麼能操縱data.preferences對象,以便我可以重新安排數組元素的順序,然後通過新的對象回到玉?順便說一句:這個數據是什麼對象類型?

僅供參考 - 我不想更改數據庫中的順序。

回答

1

如果要操縱Mongoose查詢的結果,通常最好在查詢上調用lean(),以便直接獲取可以自由修改的普通JavaScript對象。否則,它是一個不容易操縱的貓鼬模型實例:

UserTabs.findOne({ 'username' : userID }).lean().exec(function(err, data) { 
    // data is a JavaScript object, modify it as needed. Use the standard 
    // JavaScript array manipulation functions to modify data.preferences. 
    ... 
} 
+0

您節省了我的一天....謝謝 – user3658423