我对MERN很陌生,我想知道这是否可能。如果你有任何经验,请帮助:)
这里是我的朴素代码:
1。创建axios客户端
const api = axios.create({
method: 'GET',
baseURL: 'https://api.someAPI.com',
headers: {
'API_KEY': process.env.API_KEY,
Accept: 'application/json',
},
});
2。获取JSON并将其保存到MongoDB上的新集合
function getAPI_AndSaveToDB() {
api('/api/v3/exactURI')
.then((value) => res.json(value.data))
.then(dbo.createCollection("myCollection")
.then(myCollection.insertMany(value));
}
单个文档
这是一个使用Axios和官方MongoDB驱动程序进行请求的示例。你可以从中学习并适应你的需求:也许你也想考虑使用像Mongoose这样的ORM,这取决于你的项目。
const axios = require('axios');
const { MongoClient } = require('mongodb');
async function fetchDataAndSaveToMongoDB() {
// Fetch the JSON data from a URL
const { data } = await axios.get('https://example.com/data.json');
// Connect to MongoDB
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
try {
// Select the database and collection
const db = client.db('mydb');
const collection = db.collection('mycollection');
// Insert the JSON data into the collection
const result = await collection.insertOne(data);
console.log(`${result.insertedCount} document(s) inserted`);
} finally {
// Close the MongoDB connection
await client.close();
}
}
fetchDataAndSaveToMongoDB();
请注意,您需要在Node.js项目中安装axios和mongodb模块,以使此代码工作。您可以在项目目录中运行以下命令:
$ npm install axios mongodb
多个文档如果请求的文件是一个数组,你可以用MongoDB驱动程序的insertMany
方法替换insertOne
,将数组的每个元素作为一个单独的文档插入到集合中。
UPDATE目前,我按照@Ezequias Dinella的指示(非常感谢!),并有这个代码女巫还没有准备好,但向前迈进了一步。
const axios = require('axios');
const { MongoClient } = require('mongodb');
async function fetchAndSaveDataToDB() {
// Fetch the JSON data from a API URL
const api = axios.create({
method: 'GET',
baseURL: process.env.BASE_URL,
headers: {
API_KEY: process.env.API_KEY,
Accept: 'application/json',
},
});
const { data } = await api.get(process.env.URI);
// Insert the JSON data into the collection
await mongoClient.connect();
try {
const database = mongoClient.db('myDB');
//drop old collection
const oldCollection = 'collection_12';
const isDropped = database.collection(oldCollection).drop();
if (!isDropped) {
console.log(`ERROR:: ${oldCollection} not dropped`);
} else {
console.log(`${oldCollection} successfully dropped`);
}
// Insert the JSON data into a new collection
const collectionName = 'collection_14';
const theNewCollection = database.collection(collectionName);
const options = { ordered: true }; //prevents insert docs if one fails
const result = await theNewCollection.insertMany(data, options);
console.log(
`${result.insertedCount} documents in ${collectionName} successfully inserted`
);
} finally {
await mongoClient.close();
}
}
fetchAndSaveDataToDB().catch(console.dir);