這就是我定義架構的方式
const apiSchema = new Schema({
entries: [{
API: {
type: String
},
Description: {
type: String
},
Link: {
type: String
},
Category: {
type: String
}
}]
});
module.exports = mongoose.model('api', apiSchema);
這是我的控制器
const Data = require('./models/api');
p.get('/', (req, res, next) => {
request('https://api.publicapis.org/entries', function (error, response, body) {
var result = JSON.parse(body);
console.log('body:', result);
result = new Data({
entries: {
API: req.body.API,
Desription: req.body.Desription,
Link: req.body.Link,
Category: req.body.Category
}
})
result.save()
.then(result => {
console.log('Entry saved');
})
.catch(err => {
console.log(err);
});
});
});
當我運行服務器并打開指南針時,我發現只有條目陣列中的物件 id 被保存。我希望條目陣列中的所有欄位都保存在資料庫中。
uj5u.com熱心網友回復:
您可以按如下方式保存獲取的資料:
- 首先匯入 HTTPS 模塊發送 HTTPS 獲取請求
- 創建一個陣列來保存緩沖區塊
- 當所有的塊都被完全接收到時,連接這些塊
- 將連接的資料保存在資料庫中
//test.js controller file
const Data = require('./../database/models/test');
const https = require('https');
module.exports = (req,res)=>{
let data =[]; //array to keep data chunks
https.get('https://api.publicapis.org/entries', function (response) { //send request to api
response.on('data', d => {
data.push(d); //get data as chunk by chunk and push them to array
}).on('error',e=>{
console.log(e); //
});
response.on('end',()=>{
//when all data chunks are received,
// concat all buffered chunks and
//create js object from it
let fetchedData= JSON.parse(Buffer.concat(data).toString());
console.log(fetchedData);
let result = new Data({
entries:fetchedData.entries // fetched data has entries array , that is data that you want to save
});
result.save() //save data to db
.then(result => {
console.log('Entry saved');
})
.catch(err => {
console.log(err);
});
res.send(result);
})
}) };

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476762.html
