我正在使用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();
}
});
答案 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
})