如何使用find从环回查询中获取结果?

时间:2018-09-21 08:43:19

标签: node.js asynchronous db2 loopbackjs

我正在使用nodejs。使用库回送连接器连接到db2 db。

我想做的是创建一个cron作业来运行特定任务。 在该任务中,我假设基于特定条件(在本例中为invCode)查询db,然后进行一些后处理,然后更新回db。

问题1:

这是获取查询结果的正确方法吗?

问题2:

我的resultList返回一个Promise结果。我如何获得实际值?

'use strict';

var loopback = require('loopback');
var boot = require('loopback-boot');

const cron = require("node-cron");

var app = module.exports = loopback();

app.start = function() {

    // schedule tasks to be run on the server
    var job1 = cron.schedule("* * * * * * ", function() {
        console.log("---------------------");
        console.log("Running Cron Job 1");

        var Inventory = app.models.Inventory;

        var resultList = Inventory.find({where: {invCode: 'A10231'}})
        .then(function(result){
            return resultList = result;
        })
        .catch(function(err){
            return err;
        });

        console.log("outside!");
        console.log("resultList: " + resultList.value );

    });

    job1.start();

    // start the web server
    return app.listen(function() {
        app.emit('started');

        var baseUrl = app.get('url').replace(/\/$/, '');

        console.log('Web server listening at: %s', baseUrl);

        if (app.get('loopback-component-explorer')) {
            var explorerPath = app.get('loopback-component-explorer').mountPath;
            console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
        }
    });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
    if (err) throw err;

    // start the server if `$ node server.js`
    if (require.main === module) {
        app.start();      
    }
});

1 个答案:

答案 0 :(得分:0)

find方法是异步的,并返回Promise。实际上,您的代码

console.log("resultList: " + resultList.value );

总是在此块之前执行:

Inventory.find({where: {invCode: 'A10231'}})
  .then(function(err, inventories) {
    // inventories is a list of Inventory objects, use your data HERE
  })