使用MongoDB和NodeJS将多个数据存储在不同的集合中

时间:2020-06-12 13:13:09

标签: node.js mongodb

我正在创建一个脚本,该脚本将在MongoDB中的不同集合中存储多个数据。目前,脚本可以从API接收数据(我正在使用Binance API)并将其存储在MongoDB集合中。

打包了我使用的东西:Node-Schedule(这就是为什么0 * * * *)来自函数开始的地方。

当前脚本如下所示。这是完整的代码,可以更好地理解。在下面,我将写下有问题的区域。

var requestPromise = require('request-promise');
 const { MongoClient } = require('mongodb');
 const schedule = require('node-schedule');
 var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
 const fetch = require("node-fetch");

 var today = new Date();
 var date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
 var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
 var dateTime = date + ' ' + time;

 var j = schedule.scheduleJob('0 * * * *', function() {

     fetch('https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1h&limit=1')
         .then(res => res.json())
         .then(data => {
             const btcusdtdata = data.map(d => {
                 return { Open: parseFloat(d[1]), High: parseFloat(d[2]), Low: parseFloat(d[3]), Close: parseFloat(d[4]), Volume: parseFloat(d[5]) }
             });
             console.log(btcusdtdata);
             saveToDatabase(btcusdtdata);
         })
 });

 const saveToDatabase = function(BTCdata) {

     const url = 'mongodb+srv://username:password3@cluster0-1kunr.mongodb.net/<dbname>?retryWrites=true&w=majority';

     MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, db) => {
         if (err) throw err;
         const dbo = db.db('CryptoCurrencies');
         const myobj = { Name: 'BTCUSDT', Array: BTCdata, Date: dateTime };
         dbo.collection('BTCUSDT').insertOne(myobj, (error, res) => {
             if (error) throw error;
             console.log('1 document inserted');
             db.close();
         });
     });
 };

问题: 我需要从API接收多个数据。假设目前只有一个符号BTCUSDT,并且我收到与此符号对应的数据。如何接收来自不同符号的数据? 除此之外,还有什么方法可以构造数据以将特定数据发送到某些特定集合?在这里,我将数据保存到特定的集合中。

问题:如何接收两个特定数据并将其发送两个特定集合?有可能做到吗?还是我需要创建200个函数,并以不同的方式指定它们?

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, db) => {
         if (err) throw err;
         const dbo = db.db('CryptoCurrencies');
         const myobj = { Name: 'BTCUSDT', Array: BTCdata, Date: dateTime };
         dbo.collection('BTCUSDT').insertOne(myobj, (error, res) => {
             if (error) throw error;
             console.log('1 document inserted');
             db.close();

0 个答案:

没有答案