在 node.js 中与数据库通信

Posted

技术标签:

【中文标题】在 node.js 中与数据库通信【英文标题】:communicating with database in node.js 【发布时间】:2012-06-01 04:02:31 【问题描述】:

我是 node.js 的新手。我使用 node.js 创建了服务器端应用程序。在这个应用程序中,我正在从数据库中检索数据。我有以下代码:

router.map(function () 
this.root.bind(function (req, res)   
db.all("SELECT * FROM employee", function(err, rows)

    rows.forEach(function(row)
    
         str=str+' '+row.name+'     '+row.empid+'    '+row.address+'   '+row.mobile;
        res.send(str);

    );


);

);

这段代码只返回数据库的第一行作为控件在 res.send(str) 之后返回。我想要 json 格式的 ios 应用程序中的数据。请就这个问题提出一些解决方案。

【问题讨论】:

【参考方案1】:

类似

router.map(function () 
    this.root.bind(function (req, res)   
        db.all("SELECT * FROM employee", function(err, rows)
        
            res.send(JSON.stringify(rows));
        );
    );
);

router.map(function () 
    this.root.bind(function (req, res)   
        db.all("SELECT * FROM employee", function(err, rows)
        
            var out = [];
            var rowidx;
            for(rowidx in rows) 
                out.push(name: rows[rowidx].name, empid: rows[rowidx].empid, address: rows[rowidx].address, mobile: rows[rowidx].mobile); 
            
            res.send(JSON.stringify(out);
        );
    );
);

应该可以正常工作,具体取决于“行”对象是否简单。

【讨论】:

@VXtreme 当你循环遍历一个数组时,你会得到索引。我刚刚将返回的索引命名为“rowidx”。然后要访问数组中的该元素,您可以执行 rows[rowidx].

以上是关于在 node.js 中与数据库通信的主要内容,如果未能解决你的问题,请参考以下文章

在 node.js 中与 socket.io 私聊

node.js 中与 fs.createWriteStream 关​​联的事件

用于在 EF Core 中与数据库通信的安全性

如何使用 Node.js net.Socket 与 Postgresql 数据库进行通信,就像使用终端一样

使用 Redis 在 PHP 和 socket.io/node.js 之间进行通信

Node.js权威指南 - 实现基于TCP与UDP的数据通信