最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何使我的代码更简单的数据库(mongodb)?

IT培训 admin 9浏览 0评论

如何使我的代码更简单的数据库(mongodb)?

我经常使用java。 我很困惑,以前我用node.js编码。 环境:快递+猫鼬

当我尝试使用数据库中的数据时,我通常使用dao-pattern创建代码。

如果我想从数据库中的每个表中调用两个变量,

ex)
String title = user_dao.getData("title");
String code = book_dao.getData("code");

但是我知道节点不能以这种方式使用它。当我调用上面的两个变量时:

database.UserDaoModel.get(options, function(err, results) {
    var title = results._doc.title;

    database.BookDaoModel.get(options, function(err, book_results) {
        var code = book_results._doc.code;

如您所见,我必须为BookDaoModel定义新行...以获取代码值。我认为这实在是效率低下。上面的例子简单地引入了两个数据,但是你知道我们需要在5或6方法上添加更多的函数吗?

  • 用户验证
  • 设备验证
  • 等等...

有没有什么办法可以在节点中使用我在Java中使用的dao-pattern?

我不想使用每个回调来逐步获取数据。如果我尝试从三个表中获取三个数据中的每一个,我必须使用三个回调。

我想在一条线上完成所有这些。

回答如下:

你需要用promises包装你的函数,例如:

function get(db,model,options){
    return new Promise((res,rej) => {
        db[model].get(options,(err,val) => {
            if (err) rej(err);
            res(val);
        }
    });
}

然后:

async function run(){
    const results = await Promise.all([
        get(database,"UserDaoModel",options),
        get(database,"BookDaoModel",options)
    ]);
    const title = results[0]._doc.title,
        code = results[1]._doc.code;
}

您可以在Promise.all()中添加任意数量的获取,并在结果数组中访问它们。 (我忘了说,但当然,你需要调用run()函数)

如何使我的代码更简单的数据库(mongodb)?

我经常使用java。 我很困惑,以前我用node.js编码。 环境:快递+猫鼬

当我尝试使用数据库中的数据时,我通常使用dao-pattern创建代码。

如果我想从数据库中的每个表中调用两个变量,

ex)
String title = user_dao.getData("title");
String code = book_dao.getData("code");

但是我知道节点不能以这种方式使用它。当我调用上面的两个变量时:

database.UserDaoModel.get(options, function(err, results) {
    var title = results._doc.title;

    database.BookDaoModel.get(options, function(err, book_results) {
        var code = book_results._doc.code;

如您所见,我必须为BookDaoModel定义新行...以获取代码值。我认为这实在是效率低下。上面的例子简单地引入了两个数据,但是你知道我们需要在5或6方法上添加更多的函数吗?

  • 用户验证
  • 设备验证
  • 等等...

有没有什么办法可以在节点中使用我在Java中使用的dao-pattern?

我不想使用每个回调来逐步获取数据。如果我尝试从三个表中获取三个数据中的每一个,我必须使用三个回调。

我想在一条线上完成所有这些。

回答如下:

你需要用promises包装你的函数,例如:

function get(db,model,options){
    return new Promise((res,rej) => {
        db[model].get(options,(err,val) => {
            if (err) rej(err);
            res(val);
        }
    });
}

然后:

async function run(){
    const results = await Promise.all([
        get(database,"UserDaoModel",options),
        get(database,"BookDaoModel",options)
    ]);
    const title = results[0]._doc.title,
        code = results[1]._doc.code;
}

您可以在Promise.all()中添加任意数量的获取,并在结果数组中访问它们。 (我忘了说,但当然,你需要调用run()函数)

发布评论

评论列表 (0)

  1. 暂无评论