想法如何在mongodb中存储代码片段/对象(不是json)?

时间:2018-06-12 06:37:11

标签: json node.js mongodb

所以,让我们说我正在将node.js中的csv转换为json,并在客户输入文件中找到的字段与我的平台所需的对象之间进行映射,例如: / p>

 var objInvoice = {
        "id" : guid.create().value, 
        "financingType" : "scf", 
        "batchId" : batchId, 
        "recordTypeCode" : inv.kayittipi, 
        "buyerReference" : result[0].tedarikcireferans, 
        "supplierReference" : inv.tedarikcireferans, 
        "invoiceDate" : moment(inv.faturatarih +"-140000"  , "YYMMDD-HHmmss").toISOString(), 
        "certifiedInvoiceAmount" : inv.odenecekfaturatutar, 
        "currencyCode" : inv.parabirimi, 
        "maturityDate" : moment(inv.orjvadetarihi +"-140000"  , "YYMMDD-HHmmss").toISOString(), 
        "correctedMaturityDate" : moment(inv.orjvadetarihi +"-140000"  , "YYMMDD-HHmmss").toISOString(), 
        "originalInvoiceAmount" : inv.orjfaturatutar, 
        "invoiceNo" : inv.faturano, 
        "invoiceSerialNo" : inv.faturaserino, 
        "noterizedDocNo" : inv.belgenoteryevmiyeno, 
        "hashCode" : inv.hashCode, 
        "forecastDate" : inv.fiilivadetarihi, 
        "supplierTaxId" : inv.tedarikcivkn, 
        "supplierName" : inv.tedarikciadi, 
        "invoiceType" : inv.faturatipi, 
        "buyerAccountNumber" : inv.aliciiban, 
        "buyerTaxId" : inv.alicivkn, 
        "fiReference" : inv. bankakodu, 
        "bankBranchCode" : inv.bankasubeno, 
        "invoiceUploadStatus" : inv.dosyakayitstatu, 
        "gwCode" : "111110000000", 
        "gwCodeExplanation" : "", 
        "invoiceDiscountDate" : null, 
        "additionalInformation1" : inv.aciklama1, 
        "additionalInformation2" : inv.aciklama2,
        "additionalInformation3" : inv.aciklama3,
        "lastModificationDate" : null, 
        "newInvoiceId" : "00000000-0000-0000-0000-000000000000", 
        "oldInvoiceId" : "00000000-0000-0000-0000-000000000000", 
        "supplierIban" : "", 
        "supplierBankName" : "", 
        "customUniqueId" : "", 
        "deductionReason" : "", 
        "paymentObligationNo" : null, 
        "deductionAmount" : "", 
        "sellAmount" : "", 
        "invoiceAmountWithoutVat" : "",
        "uploadDate" : now.toISOString(), 

    } 

但是customer2可能有不同的定位字段,甚至文件中的标题不同 - 例如:

var objInvoice = {
        "id" : guid.create().value, 
        "financingType" : "scf", 
        "batchId" : batchId, 
        "recordTypeCode" : inv.element1, 
        "buyerReference" : result[0].element2, 
        "supplierReference" : inv.element2, 
        "invoiceDate" : moment(inv.element3 +"-140000"  , "YYMMDD-HHmmss").toISOString(), 
        "certifiedInvoiceAmount" : inv.element4, 
        "currencyCode" : inv.element5, 
        "maturityDate" : moment(inv.element6 +"-140000"  , "YYMMDD-HHmmss").toISOString(), 
        "correctedMaturityDate" : moment(inv.element6 +"-140000"  , "YYMMDD-HHmmss").toISOString(), 
        "originalInvoiceAmount" : inv.element7, 
        "invoiceNo" : inv.element8, 
        "invoiceSerialNo" : inv.element9, 
        "noterizedDocNo" : inv.element10, 
        "hashCode" : inv.element11, 
        "forecastDate" : inv.element12, 
        "supplierTaxId" : inv.element13, 
        "supplierName" : inv.element14, 
        "invoiceType" : inv.element15, 
        "buyerAccountNumber" : inv.element16, 
        "buyerTaxId" : inv.element17, 
        "fiReference" : inv. element18, 
        "bankBranchCode" : inv.element19, 
        "invoiceUploadStatus" : inv.element20, 
        "gwCode" : "111110000000", 
        "gwCodeExplanation" : "", 
        "invoiceDiscountDate" : null, 
        "additionalInformation1" : inv.element21, 
        "additionalInformation2" : inv.element22,
        "additionalInformation3" : inv.element23,
        "lastModificationDate" : null, 
        "newInvoiceId" : "00000000-0000-0000-0000-000000000000", 
        "oldInvoiceId" : "00000000-0000-0000-0000-000000000000", 
        "supplierIban" : "", 
        "supplierBankName" : "", 
        "customUniqueId" : "", 
        "deductionReason" : "", 
        "paymentObligationNo" : null, 
        "deductionAmount" : "", 
        "sellAmount" : "", 
        "invoiceAmountWithoutVat" : "",
        "uploadDate" : now.toISOString(), 

     }

所以我在想是否可以存储每个映射' mongodb的每位客户?并通过客户参考拉出正确的objInvoice?

问题是,objInvoice不能存储为json文档,因为它包含inv.element1等变量。

我还尝试将其存储为一个大字符串(我尝试使用{}而不使用{}),我能够存储它很好但是当我从代码中删除它并且没有通知它时,vars没有& #39;按预期处理。

任何好的程序员的想法?

或唯一的方法是将每个客户存储在单独的js文件中?

1 个答案:

答案 0 :(得分:1)

不幸的是,您的数据甚至不是有效的Javascript对象或JSON。

一个想法是将值无效的值moment(inv.orjvadetarihi +"-140000" , "YYMMDD-HHmmss").toISOString()转换为字符串(正确转义)。因此,您将能够JSON.stringifyJSON.parse。然后,您的代码中的字符串可以eval

预处理数据以将非字符串值转换为字符串肯定有效。你可以使用正则表达式。