Estoy tratando de analizar un archivo CSV (que puede contener varias entradas) y almacenar los datos directamente en mi mangosta DB. Mi código parece estar analizando los datos correctamente porque cuando depuro y observo rápidamente la variable "entidad" y "temp", veo las entradas de datos del CSV. Sin embargo, cuando voy a almacenar los objetos en la base de datos, veo objetos vacíos con solo una identificación generada automáticamente.
pruebaCSVfile.csv
author, ownerName, authorID, contactInfo, published, summary jon doe, bob, 321, jondoe@gmail, 03/17, testing testing testingAquí está mi archivo uploadCSV.js
const mongoose = require("mongoose"); const passport = require("passport"); const csvtojson = require("csvtojson"); const router = require("express").Router(); const bookModel= mongoose.model("Book"); const async = require('async'); csvtojson() .fromFile("testCSVfile.csv") .then(csvData => { async.eachSeries(csvData,(data,callback) => { let entity = { author: data.author, ownerName: data.ownerName, authorID: data.authorID, contactInfo: data.contactInfo, published: data.published, summary: data.summary }; bookModel.create({entity}, function(err) { if(err) return callback(err); return callback(null); }) }, (err) => { if(err) console.log(err); console.log("books are successfully imported!!!"); console.log(entity); }); });Salida terminal
[ [0] { [0] author: 'jon doe', [0] ownerName: 'bob', [0] authorID: '123', [0] contactInfo: 'jondoe@gmail', [0] published: '03/17', [0] summary: 'testing testing testing', [0] }A partir de ahora, el archivo CSV es local, pero eventualmente será de un usuario que lo está cargando desde la interfaz. Aunque la variable de entidad tiene los datos correctos, no se guarda correctamente. Si alguien pudiera darme algún consejo sería muy apreciado!
No ha definido el esquema para su modelo de mangosta, por lo que le permitirá insertar cualquier cosa en la base de datos ya que el esquema está vacío.
https://mongoosejs.com/docs/guide.html#strict
La opción estricta (habilitada de forma predeterminada) garantiza que los valores pasados a nuestro constructor de modelos que no se especificaron en nuestro esquema no se guarden en la base de datos.
Cree su esquema de mangosta para el modelo
https://mongoosejs.com/docs/guide.html#definition
const bookSchema = new mongoose.Schema({ author: String, ownerName: String, // ........ rest of your model properties }); const bookModel= mongoose.model("Book", bookSchema);Cambio
bookModel.create({entity}, function(err)para
bookModel.create(entity, function(err)