2016-08-25 2 views
2

Мне нужно импортировать файл JSON в базу данных Mongoose. Это должен быть сценарий, который должен запускаться ежедневно.Импорт файла Json в Mongoose

У меня есть JSON следующим образом:

[ 
{ 
    "grant_title": "name SRL", 
    "id": "30579843531", 
    "total_amount": "551954" 
},{ 
    "grant_title": "AADI CAPIF ASOCIACION CIVIL", 
    "id": "30574449967", 
    "total_amount": "37050" 
},{ 
    "grant_title": "LA CAMPAÑOLA S.A", 
    "id": "23311183419", 
    "total_amount": "139292" 
    } 
] 

Мне нужна эта информация будет храниться в базе данных.

Это должен быть сценарий NodeJS (экспресс) или сценарий. Пожалуйста, будьте ясны, потому что я новичок.

+0

ты кричишь? –

+0

Извините, мой английский плохой :(Мне нужна помощь. :) –

ответ

3

Давайте возьмем это постепенно. Во-первых, вам нужно либо создать задание CRON, либо использовать планировщик NodeJS, например agenda, для выполнения вашей функции с интервалом времени.

Теперь ... внутри вашей функции вам необходимо загрузить свой файл JSON в NodeJS.

var json = require('/path/to/file.json'); 

И наконец ... использование insertMany для массового ввода в вашу коллекцию.

db.collectionName.insertMany(json, function(err,result) { 
    if (err) { 
    // handle error 
    } else { 
    // handle success 
    } 
}); 

EDIT: Вот пример использования Повестки дня в NodeJS запустить программу ежедневно в 11:30

var Agenda = require('agenda'); 

startScheduler = function() { 
    // Set the scheduler utilizing Agenda 
    var agenda = new Agenda({db: {address: 'url/to/database'}}); 

    agenda.define('RUN AT 1130 AM', function(job, done) { 
     // your function goes here... 
     done(); 
    }); 

    agenda.on('ready', function() { 
     // CRON SYNTAX 
     // * * * * * * 
     // Minute/Hour/Day/Month/Day of week (0-6) Sunday-Saturday 
     agenda.every('30 11 * * *', 'RUN AT 1130 AM'); // Run daily at 11:30 AM 

     agenda.start(); 
    }); 
}; 

startScheduler(); 
+0

После битвы немного с 'db.collectionName.insertMany (...)' (ошибка _'Начало читать свойство «insertMany» undefined'_) , Я закончил тем, что написал нечто эквивалентное 'const mongoose = require ('mongoose');/* ... DB connexion ... */mongoose.connection.db.collection ('collectionName'). InsertMany (...) '. Однако мое предложение представляет собой подход, не имеющий принципиальной схемы (возможно, Ok, например, если вы хотите импортировать данные из надежного экспорта, не беспокоясь о объявлениях схем); в большинстве ситуаций использование схем Mongoose было бы более безопасным. –

+0

... кроме того, если вы используете схемы Mongoose, если вы вставляете строку даты в данные JSON, у нее все еще будет тип «Date» в Mongo (вместо того, чтобы быть сохраненным как необработанная строка). То же самое относится и к другим типам данных. –

Смежные вопросы