Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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 Mongoose,从子文档中提取_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Mongoose,从子文档中提取

Javascript Mongoose,从子文档中提取,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,这是我的文件: { password: '87654321', title: 'Organization A', members: [ { tier: 1, joinedDate: Sun May 12 2013 00:00:00 GMT+0200 (CEST), user: 543fc462ed385e5e77a98d56 }, { tier: 2, joinedDate: Sat May 11 2013 0

这是我的文件:

{ 
  password: '87654321',
  title: 'Organization A',
  members: 
   [ { tier: 1,
       joinedDate: Sun May 12 2013 00:00:00 GMT+0200 (CEST),
       user: 543fc462ed385e5e77a98d56 
     },
     { tier: 2,
       joinedDate: Sat May 11 2013 00:00:00 GMT+0200 (CEST),
       user: 543fc462ed385e5e77a98d57 
     },
     { tier: 3,
       joinedDate: Fri May 10 2013 00:00:00 GMT+0200 (CEST),
       user: 543fc462ed385e5e77a98d58 
     }
    ]
}
我想写一个查询,用给定的用户id提取一个成员

pull命令可能是我应该使用的

它不起作用了。我做错了什么

更新

我的模式:

var organizationSchema = new Schema({
  title: String,
  password: { type: String, required: true, index: { unique: true } },
  members: [
    {
      tier: { type: Number, required: true, min:1, max:4},
      joinedDate: Date,
      user:{
        type: Schema.ObjectId,
        ref: 'user',
        required: true,
        unique:true
      }
    }
  ]
});

我在您的members数组中没有看到任何引用的id,请删除_id并直接对您的user属性执行此操作,因为架构上就是这样

mongoose.model('organization').findOne({_id:user.organization}, function(err, org){
      org.members.pull({'user':user._id});
      org.save();
    })
编辑: 也许是这个

mongoose.model('organization').update({ _id: user.organization }, {$pull: 
{members.user: user._id}}, {}, function(err, numAffected){
 //check numAffected

});

试试看

似乎只有当元素具有
\u id
属性时,
mongoosarray#pull
方法才有效

我发现直接调用
update
更容易避免这些意外:

mongoose.model('organization').update(
    {_id: user.organization},
    {$pull: {members: {user: user._id}}},
    function(err, numAffected) { ... }
);

你是否将数据输入到org变量中?是的,返回了organization?你能发布你的模式吗?非常奇怪,我在NUMAFICTED上得到1,但当我查看我的数据库时,它仍然存在。你可能有一个正确的答案。也许是我的单元测试让事情变得有趣。当我发现有什么问题时,我会批准的。别担心!使用update子句更好,因为在使用pull时有一个原子操作。请尝试将用户类型的模型定义更改为Schema.Types.objectids,这不是我所拥有的吗?用户:{type:Schema.objectId,ref:'user'})?
mongoose.model('organization').update(
    {_id: user.organization},
    {$pull: {members: {user: user._id}}},
    function(err, numAffected) { ... }
);