锻炼非常简单。我需要将http.get()
调用Node'之后获得的数据移至mongoDB。我正在用 Mongoose 。我的问题是如何将GET结果传递到 Mongoose 的方法中。
有关此方法的几个问题:
目前,我被困在下面:
示例API数据:
{
activity: 'Memorize the fifty states and their capitals',
type: 'education',
participants: 1,
price: 0,
link: '',
key: '4179309',
accessibility: 0
}
我的mongo收藏的结构
const mongoose = require('mongoose');
const activityapiSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
activity: {type: String, required: true},
type: {type: String, required: true},
key: {type: Number, required: true}
});
module.exports = mongoose.model('ActivityAPI', activityapiSchema);
主要代码
const https = require('https');
const mongoose = require('mongoose');
const options = new URL('https://www.boredapi.com/api/activity');
//connect to MongoDB
mongoose.connect('CONNECTION_STRING',
{
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log("MongoDb connected"))
.catch(err => console.log(err));
//obtain data using GET
https.get(options, (res) => {
console.log('statusCode:', res.statusCode);
//console.log('headers:', res.headers);
res.on('data', (data) => {
//process.stdout.write(d)
//display returned data by API
console.log(JSON.parse(data));
});
})
.on('error', (err) => {
console.error(err);
});
//passing the result into MongoDB, need help
我找到了一种解决方法代码,可将GET
结果传递到下一行代码中。
//obtain data using GET
https.get(options, (res) => {
console.log('statusCode:', res.statusCode);
res.on('data', (data) => {
callback(data); //allows to reference the data in callback function below
});
})
.on('error', (err) => {
console.error(err);
})
;
//retrive data and load
function callback(value){
console.log(JSON.parse(value));
let valueMod = JSON.parse(value);
//next thing you want to do with the data...
};