Идеи, как хранить фрагменты кода / объекты (не JSON) в Mongodb? - PullRequest
0 голосов
/ 12 июня 2018

Итак, допустим, я делаю преобразование csv в json в node.js и сопоставляю поля, найденные во входном файле клиента, и объект, который требует моя платформа, например:

 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.

Я также пытался сохранитькак одна большая строка (я пытался с {} и без {}), я смог сохранить ее в порядке, но когда я извлек ее из кода и разархивировал ее, переменные не были обработаны, как ожидалось.

Есть идеи, товарищи хорошие программисты?

Или единственный способ хранить их в отдельных js-файлах для каждого клиента?

1 Ответ

0 голосов
/ 12 июня 2018

К сожалению, ваши данные даже не являются действительными объектами Javascript или JSON.

Идея состоит в том, чтобы преобразовать значения, такие как moment(inv.orjvadetarihi +"-140000" , "YYMMDD-HHmmss").toISOString(), которые недопустимы, в строки (экранирование правильно).В результате вы сможете JSON.stringify и JSON.parse.Строки могут быть eval использованы в вашем коде.

Предварительная обработка ваших данных для экранирования нестроковых значений в строки, безусловно, работает.Вы можете использовать регулярные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...