【问题标题】:how get data from database using api?如何使用api从数据库中获取数据?
【发布时间】:2025-11-25 20:50:02
【问题描述】:

我是 nodejs 和 reactjs 的初学者,我从 reactjs 和 nodejs 开发了一个应用程序,我使用 postgresql 作为数据库,当我尝试通过调用 server.js 中的 api 来获取员工详细信息时,它会在 VScode 控制台中显示数据日志,但是如果我在浏览器的开发者控制台中看到,则说明没有从数据库中获取数据,有人帮我解决这个问题吗?

server.js


    var restify=require('restify')
    const {empdetails,empdetails_id } = require('./Function');
    var server=restify.createServer() //server created
    
    server.get('/empdetails',empdetails)
    server.get('/empdetails_id/:id',empdetails_id)
    
    server.listen(8080, function(){
        console.log("server started...")
    })

function.js


    var Sequelize=require('sequelize')
    
    const connection = new Sequelize('mydb', 'postgres', '123456', {
        host: 'localhost',
        dialect:  'postgres' 
      });
    
      var Emp=connection.define('emp',{
        fullName: {
            type: Sequelize.STRING
          },
          email: {
            type: Sequelize.STRING
          }    
    })
    
    module.exports ={
    
       
    // employee details fetched
        empdetails: function empdetails(req,res,next){
            // res.send('employee details ')
            connection.sync().then(function(){
                Emp.findAll().then(function(emps){
                              console.log(emps)
                              var sample=emps
                              console.log(sample)
                              res.send(emps);
                  })
              })
        },
    // employee details by ID
        empdetails_id: function empdetails_id(req,res,next){
            res.send('employee details of :  '+req.params.id)
            connection.sync().then(function(){
                Emp.findByPk(req.params.id).then(function(emps){
                              console.log(emps)
                  })
              })
        },
        
     };

【问题讨论】:

  • 顺便提一下,您每次都在请求时调用 sequelize.sync。如果模型发生更改,这将导致数据库重置。也没有必要。它仅用于创建数据库,应在启动 nodejs 服务器之前调用一次以用于“开发”目的。对于生产,您不使用 sequelize.sync。您应该检查 sequelize 迁移。 sequelize.org/master/manual/migrations.html

标签: node.js reactjs sequelize.js sequelize-cli


【解决方案1】:

对不起,我不使用restify和sequelize。但要进行简单的 API 调用,您可以使用 fetch:

fetch('urlToFetch').then(res => {
    if(res.ok) {
        console.log(res.json())
    } 
    else {
        console.log('Error')
    }
})
.catch(error => {
    console.log('Error: ' + error.message)
})

文档:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

【讨论】:

    【解决方案2】:
    var Sequelize=require('sequelize')
    
    const connection = new Sequelize('mydb', 'postgres', '123456', {
        host: 'localhost',
        dialect:  'postgres' 
      });
    
      var Emp=connection.define('emp',{
        fullName: {
            type: Sequelize.STRING
          },
          email: {
            type: Sequelize.STRING
          }    
    })
    
    module.exports ={
    
       
    // employee details fetched
        empdetails: function empdetails(req,res,next){
            // res.send('employee details ')
            connection.sync().then(function(){
                Emp.findAll().then(function(emps,error){
                               
                              //make sure you can return response
                          res.status(200).send({
                          data: emps,
                          message: "Success business list",
                           status: 0,
                    });
                  })
              })
        },
    // employee details by ID
        empdetails_id: function empdetails_id(req,res,next){
            res.send('employee details of :  '+req.params.id)
            connection.sync().then(function(){
                Emp.findByPk(req.params.id).then(function(emps,error){
    
                              res.status(200).send({
                          data: emps,
                           message: "Success business list",
                        status: 0,
            });
                  })
              })
        },
        
     };
    

    你好, 在此处尝试此代码,您需要返回带有状态的响应。

    我希望它对你有用。 谢谢

    【讨论】: