¿Cuáles son las diferentes formas de insertar un documento (registro) en MongoDB usando Mongoose?
Mi intento actual:
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var notificationsSchema = mongoose.Schema({ "datetime" : { type: Date, default: Date.now }, "ownerId":{ type:String }, "customerId" : { type:String }, "title" : { type:String }, "message" : { type:String } }); var notifications = module.exports = mongoose.model('notifications', notificationsSchema); module.exports.saveNotification = function(notificationObj, callback){ //notifications.insert(notificationObj); won't work //notifications.save(notificationObj); won't work notifications.create(notificationObj); //work but created duplicated document }¿Alguna idea de por qué insertar y guardar no funciona en mi caso? Intenté crear, insertó 2 documentos en lugar de 1. Eso es extraño.
.save() es un método de instancia del modelo, mientras que .create() se llama directamente desde el Model como una llamada de método, siendo de naturaleza estática, y toma el objeto como primer parámetro.
var mongoose = require('mongoose'); var notificationSchema = mongoose.Schema({ "datetime" : { type: Date, default: Date.now }, "ownerId":{ type:String }, "customerId" : { type:String }, "title" : { type:String }, "message" : { type:String } }); var Notification = mongoose.model('Notification', notificationsSchema); function saveNotification1(data) { var notification = new Notification(data); notification.save(function (err) { if (err) return handleError(err); // saved! }) } function saveNotification2(data) { Notification.create(data, function (err, small) { if (err) return handleError(err); // saved! }) }Exporte las funciones que desee fuera.
Más en Mongoose Docs , o considere leer la referencia del prototipo del Model en Mongoose.
Puede usar save() o create() .
save() solo se puede usar en un nuevo documento del modelo, mientras que create() se puede usar en el modelo. A continuación, he dado un ejemplo simple.
const mongoose = require("mongoose"); const tourSchema = new mongoose.Schema({ name: { type: String, required: [true, "A tour must have a name"], unique: true, }, rating: { type: Number, default:3.0, }, price: { type: Number, required: [true, "A tour must have a price"], }, }); const Tour = mongoose.model("Tour", tourSchema); module.exports = Tour; const Tour = require('../models/tourModel'); exports.createTour = async (req, res) => { // method 1 const newTour = await Tour.create(req.body); // method 2 const newTour = new Tour(req.body); await newTour.save(); }Asegúrese de utilizar el Método 1 o el Método 2.