Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb findone返回值-数组操作_Javascript_Arrays_Node.js_Mongoose - Fatal编程技术网

Javascript mongodb findone返回值-数组操作

Javascript mongodb findone返回值-数组操作,javascript,arrays,node.js,mongoose,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

我正在运行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?顺便问一下:这个数据是什么对象类型


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

如果您想操作Mongoose查询的结果,通常最好调用该查询,以便直接获得可以自由修改的普通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.
    ...
}