Mongoose: Remove object from array based on ID (Cast Error)

后端 未结 3 2229
天涯浪人
天涯浪人 2021-02-09 15:27

I have a model that looks like this:

mongoose.Schema({
  username: String,
  posts: [{ type: Schema.Types.ObjectId, ref: \'Post\' }]
});

I have

相关标签:
3条回答
  • 2021-02-09 15:30

    If you want remove one element from an array use this

    User
    .update( 
      {_id: req.user._id}, 
      { $pull: {posts: req.body.post_id } } 
    )
    .then( err => {
      ...
    });
    

    Here the documentation

    0 讨论(0)
  • 2021-02-09 15:34

    In order to make a research with an id in a collection you need to create a new ObjectId and then pass the id into it.

    app.delete('/post', function(req, res) {
        User.findOne({ _id: _id: ObjectId (req.user._id)}, function(err, result) {
            result.pull({ _id: ObjectId (req.body.post_id) });
        });
     });
    
    0 讨论(0)
  • 2021-02-09 15:50
    This is because when you are running user findOne query it returns an object to you.(the findOne function returns only one object)
    
    User.findOne({ _id: req.user._id}, function(err, result) {
    
     /// result is an object
        result.pull({ _id: req.body.post_id });
      });
    
    and what is result.pull you are trying to pull an element from object this is the wrong way to do
    
    do like this 
    delete result._id;
    
    
    and if you want more elements from user query in from of array you can use 
    User.find({ _id: req.user._id}, function(err, result) {
    
    // result.slice for slice you can see this http://stackoverflow.com/questions/3396088/how-do-i-remove-an-object-from-an-array-with-javascript
      });
    
    then you can do slice on array of object
    
    0 讨论(0)
提交回复
热议问题