【问题标题】:How to check if object fields are empty before inserting into mongooseDB from CSV file - Nodejs如何在从 CSV 文件插入 mongooseDB 之前检查对象字段是否为空 - Nodejs
【发布时间】:2021-06-27 19:45:09
【问题描述】:

我的代码工作正常,我想添加一些错误检查以确保没有空字段的对象可以插入数据库。我在使该部分正常工作时遇到了一些麻烦。数据来自本地 csv 文件,如下所示:

TempCSV.csv

name, address, ID, contactInfo
bob, 214 elm, 123, email
joe, 817 beach, 321, email
,45 hollywood,456, 

应该插入前两行,但不要插入最后一行,因为它缺少 name,这是一个必填字段。所以基本上每个字段在解析时都需要检查是否为空。

这是我的代码 dbparser.js

const mongoose = require("mongoose");
const passport = require("passport");
const csvtojson = require("csvtojson");
const router = require("express").Router();

const userSchema= new mongoose.Schema({
    name: String,
    address: String,
    ID: String,
    contactInfo: String
});

const userModel= mongoose.model("User");
const async = require('async');

csvtojson()
        .fromFile("TempCSV.csv")
        .then(csvData => {
            async.eachSeries(csvData,(data,callback) => {
                  let entity = {
                    name: data.name,
                    address: data.owner,
                    ID: data.ownerID,
                    };

                    userModel.create(entity, function(err)
                    {
                        if(err) return callback(err);
                        return callback(null);    
                    })
               },
                (err) => {
                     if(err) console.log(err); 
                     console.log("users are successfully imported!!!");
                });            
});

我认为添加 const userSchema 会阻止它添加空字段,但事实并非如此。 任何帮助将不胜感激。

【问题讨论】:

    标签: node.js database csv parsing mongoose


    【解决方案1】:

    您可以使用另一个函数来检查传递的对象的空性。如果obj 的所有keys 都具有真值,它将返回true,否则返回false

    function hasKeys(obj, keys) {
      return keys.every(key => !!obj[key])
    }
    

    然后在插入数据库之前检查对象。

    【讨论】:

    • 我收到一个错误:未处理的拒绝 ReferenceError: keys is not defined, when I try this method
    • keys 将是一组必需的键。像这样调用函数-hasKeys(data, ['name', 'address'])。添加您要检查的其他键
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2018-04-12
    相关资源
    最近更新 更多