我正在创建一个脚本,该脚本将在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();