mongodb findone返回值 - 数组操作

时间:2014-07-11 22:16:16

标签: javascript arrays node.js mongoose

我正在运行node.js服务器(使用express& jade)和mongodb数据库。我有一个函数,我使用findOne查询mongodb。该文档是关于用户以及具有其首选项的数组元素。因此架构看起来像这样......

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对象,以便我可以重新排列数组元素的顺序,然后将新对象传递给jade?顺便说一句:这个数据的对象类型是什么?

仅供参考 - 我不想更改数据库中的顺序。

1 个答案:

答案 0 :(得分:1)

如果您想操纵Mongoose查询的结果,通常最好在查询上调用lean(),以便直接获得可以自由修改的纯JavaScript对象。否则,它是一个不容易操作的Mongoose模型实例:

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.
    ...
}