используя функцию извлечения API для получения данных из MongoDB и отображения их в node.js - PullRequest
0 голосов
/ 22 января 2020

У меня есть приложение узла, которое вставляет различные типы курсов в mongodb и отображает их на веб-странице непосредственно из базы данных. я хочу использовать функцию API fetch () для получения данных из mongodb, передавая данные в формате json и затем отображая их с помощью e js engine

mongoose.connect('mongodb://localhost:27017/studentdb')
var db=mongoose.connection;
db.on('error', console.log.bind(console, "connection error"));
db.once('open', function(callback){
    console.log("connection succeeded");
})


app.get('/', function(req, res, next) {
    // fetch and sort course collection by id in descending order
    req.db.collection('course').find().sort({"_id": -1}).toArray(function(err, result) {
        //if (err) return console.log(err)
        if (err) {
            req.flash('error', err)
            res.render('user/list', {
                title: 'User List',
                data: ''
            })
        } else {
            // render to views/user/list.ejs template file
            res.render('user/list', {
                title: 'User List',
                data: result
            })
        }
    })
})

// SHOW ADD course FORM
app.get('/add', function(req, res, next){
    // render to views/user/add.ejs
    res.render('user/add', {
        title: 'Add course',
        topic: '',
        price: '',
        location: '',
        provider:'',
        review_rankings: '',
        author_ranking: ''
    })
})


app.post('/add', function(req,res, next){
    var topic = req.body.topic;
    var price =req.body.price;
    var location = req.body.location;
    var provider = req.body.provider;
    var review_rankings = req.body.review_rankings;
    var author_ranking =req.body.author_ranking;

    var data = {
        "topic": topic,
        "price":price,
        "location":location,
        "provider":provider,
        "review_rankings":review_rankings,
        "author_ranking": author_ranking
    };

    db.collection('course').insertOne(data,function(err, collection){


        if (err) throw err;
        console.log("Record inserted Successfully");

    });

    return res.redirect('/users');



})

Я хочу использовать получить функцию API, как в приведенном ниже коде, используя mongodb и отображая информацию на веб-странице

fetch('http"//reqres.in./api/users', {

    method:'POST',
    headers:{
        'content-type': 'application/json'
    },

    body: JSON.stringify({

        name:'user 1'
    })

}).then(res => {
    return res.json()

})
.then(data => console.log(data))
    .catch(error => console.log('ERROR'))

1 Ответ

0 голосов
/ 22 января 2020

API извлечения недоступен "из коробки" для приложений NodeJS. Вы можете использовать пакет node-fetch для получения аналогичного API (хотя есть некоторые известные различия ) или использовать другие библиотеки, такие как Ax ios.

Решение без использования внешних пакетов было бы использовать собственный модуль http (используя документированный request метод здесь )

...