Nodejs中不同js之间如何传输数据

Nodejs中不同js之间如何传输数据

db.js var mysql = require(‘mysql’); var conn = mysql.createConnection({ host:‘localhost’, user:‘root’, password:’’, database:‘carport’, port:‘3306’ });

exports.select = function select(q){

conn.query(q,function(err1,rows){ if(err1) console.log(“select==>”+err1);

。。。。。。。。。。。。。。 }); };

我在另一个js里执行conn.select(“select * from users”); 怎么得到里面的数据?


3 回复

在Node.js中,不同的JavaScript文件之间可以通过模块化的方式来传输和共享数据。模块化是通过require函数来实现的,它允许你导入其他文件中导出的变量、函数或对象。在你的例子中,db.js文件定义了一个数据库连接和一个查询方法,而你需要在另一个文件中使用这个方法并获取返回的数据。

示例代码

db.js

首先,我们定义db.js文件,其中包含数据库连接和查询方法:

// db.js
var mysql = require('mysql');

var conn = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'carport',
    port: '3306'
});

exports.select = function (query, callback) {
    conn.query(query, function (err, results) {
        if (err) {
            console.error("select==> " + err);
            return callback(err, null);
        }
        callback(null, results);
    });
};

app.js

接下来,在另一个文件(例如app.js)中,你可以这样调用select方法并处理返回的数据:

// app.js
var db = require('./db');

// 使用select方法,并提供回调函数来处理结果
db.select("SELECT * FROM users", function (error, rows) {
    if (error) {
        console.error("Error executing query: ", error);
        return;
    }

    // 在这里处理查询结果
    console.log(rows);
});

解释

  1. 模块化:在db.js文件中,我们使用module.exportsselect函数导出,使得其他文件可以使用require来访问它。
  2. 异步操作:由于数据库查询是异步的,我们使用了回调函数来处理查询的结果。当查询完成后,回调函数会被调用,参数results包含了查询到的数据。
  3. 错误处理:在回调函数中,如果查询过程中发生错误,我们通过第一个参数传递错误信息;如果没有错误,则传递查询结果。

这种方法确保了每个文件只负责其特定的功能,同时通过模块化的方式实现了文件之间的数据传输。


这个解决了

要在Node.js中实现不同JS文件之间的数据传输,可以利用模块化的方式来导出和导入需要共享的对象或函数。在这个例子中,你需要在db.js中导出数据库连接对象或查询方法,并在其他JS文件中通过require来引入这个对象或方法。

假设你的目录结构是这样的:

/project-root
  /db.js
  /app.js

首先,在db.js中,我们已经导出了select方法。如果你还需要导出连接对象,可以这样做:

// db.js
var mysql = require('mysql');

var conn = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'carport',
    port: '3306'
});

module.exports.conn = conn;
module.exports.select = function (q) {
    return new Promise((resolve, reject) => {
        conn.query(q, function (err, rows) {
            if (err) return reject(err);
            resolve(rows);
        });
    });
};

然后在app.js(或其他任何你想要使用这个数据库的方法的文件)中,你可以这样导入:

// app.js
var db = require('./db.js');

db.select("SELECT * FROM users")
    .then(users => {
        console.log(users);
    })
    .catch(err => {
        console.error(err);
    });

这种方法不仅让你能够从其他文件中访问到数据库连接和查询方法,还利用了Promise来处理异步操作,使得代码更易于阅读和维护。

如果你的目的是直接在另一个文件中访问数据库连接并执行查询,你可以直接使用导出的conn对象,但推荐方式是始终通过定义良好的接口(如上面的select方法)来操作数据库,以保持逻辑清晰和便于测试。

回到顶部