sort example collection javascript node.js mongodb express authentication

javascript - example - mongoose save



¿Cómo elimino documentos usando Node.js Mongoose? (18)

FBFriendModel.find({ id: 333 }, function (err, docs) { docs.remove(); //Remove all the documents that match! });

Lo de arriba no parece funcionar. Los registros todavía están allí.

¿Alguien puede arreglar?


A partir de "mongoose": ">=2.7.1" puede eliminar el documento directamente con el método .remove() lugar de encontrarlo y luego eliminarlo, lo que me parece más eficiente y fácil de mantener.

Ver ejemplo:

Model.remove({ _id: req.body.id }, function(err) { if (!err) { message.type = ''notification!''; } else { message.type = ''error''; } });

ACTUALIZAR:

A partir de la mangosta 3.8.1 , existen varios métodos que le permiten eliminar directamente un documento, por ejemplo:

  • remove
  • findByIdAndRemove
  • findOneAndRemove

Consulte la documentación de la API de mongoose para obtener más información.


Esto funcionó para mí, solo prueba esto:

const id = req.params.id; YourSchema .remove({_id: id}) .exec() .then(result => { res.status(200).json({ message: ''deleted'', request: { type: ''POST'', url: ''http://localhost:3000/yourroutes/'' } }) }) .catch(err => { res.status(500).json({ error: err }) });


Esto para mi es el mejor a partir de la versión 3.8.1:

MyModel.findOneAndRemove({field: ''newValue''}, function(err){...});

Y requiere solo una llamada DB. Use esto dado que no realiza ninguna acción de remove previa a la búsqueda y eliminación.


Funciona para cualquier versión de mangosta que he usado

YourSchema.remove({ foo: req.params.foo }, function(err, _) { if (err) return res.send(err) res.json({ message: `deleted ${ req.params.foo }` }) });


Para eliminar un documento, prefiero usar Model.remove(conditions, [callback])

Consulte la documentación de la API para eliminar:

http://mongoosejs.com/docs/api.html#model_Model.remove

Para este caso, el código será: -

FBFriendModel.remove({ id : 333 }, function(err, callback){ console.log(‘Do Stuff’); })

Si desea eliminar documentos sin esperar una respuesta de MongoDB, no pase una devolución de llamada, entonces debe llamar a exec en la consulta devuelta.

var removeQuery = FBFriendModel.remove({id : 333 }); removeQuery.exec();


Para generalizar puedes usar:

SomeModel.find( $where, function(err,docs){ if (err) return console.log(err); if (!docs || !Array.isArray(docs) || docs.length === 0) return console.log(''no docs found''); docs.forEach( function (doc) { doc.remove(); }); });

Otra forma de lograr esto es:

SomeModel.collection.remove( function (err) { if (err) throw err; // collection is now empty but not deleted });


Si está buscando un solo objeto para ser eliminado, puede usar

Person.findOne({_id: req.params.id}, function (error, person){ console.log("This object will get deleted " + person); person.remove(); });

En este ejemplo, Mongoose se eliminará en función de req.params.id correspondiente.


Si no tienes ganas de iterar, prueba FBFriendModel.find({ id:333 }).remove( callback ); o FBFriendModel.find({ id:333 }).remove().exec();

mongoose.model.find devuelve una Query , que tiene una función de remove .


Siempre se puede usar la función incorporada de Mongoose:

var id = req.params.friendId; //here you pass the id FBFriendModel .findByIdAndRemove(id) .exec() .then(function(doc) { return doc; }).catch(function(error) { throw error; });


Simplemente hacer

FBFriendModel.remove().exec();


Solo puede utilizar la consulta directamente dentro de la función de eliminación, por lo que:

FBFriendModel.remove({ id: 333}, function(err){});


Yo prefiero la notación de promesa, donde necesitas por ejemplo

Model.findOneAndRemove({_id:id}) .then( doc => .... )


utilizando el método remove () puede eliminar.

getLogout(data){ return this.sessionModel .remove({session_id: data.sid}) .exec() .then(data =>{ return "signup successfully" }) }


.remove() funciona como .find() :

MyModel.remove({search: criteria}, function() { // removed. });


docs es una matriz de documentos por lo que no tiene un método mongooseModel.remove() .

Puede iterar y eliminar cada documento en la matriz por separado.

O, ya que parece que está encontrando los documentos por una (probablemente) identificación única, use findOne lugar de find .


mongoose.model.find() devuelve un objeto de consulta que también tiene una función remove() .

También puede usar mongoose.model.findOne() si desea eliminar solo un documento único.

De lo contrario, puede seguir el enfoque tradicional y recuperar primero el documento y luego eliminarlo.

yourModelObj.findById(id, function (err, doc) { if (err) { // handle error } doc.remove(callback); //Removes the document })

A continuación, se detallan las formas en que puede usar el objeto model para realizar cualquiera de las siguientes acciones a fin de eliminar documentos:

yourModelObj.findOneAndRemove(conditions, options, callback)

yourModelObj.findByIdAndRemove(id, options, callback)

yourModelObj.remove(conditions, callback);

var query = Comment.remove({ _id: id }); query.exec();


¡Ten cuidado con findOne y elimina!

User.findOne({name: ''Alice''}).remove().exec();

El código anterior elimina TODOS los usuarios llamados ''Alice'' en lugar del primero solamente.

Por cierto, prefiero eliminar documentos como este:

User.remove({...}).exec();

O proporcione una devolución de llamada y omita el exec ()

User.remove({...}, callback);