从字符串化文件中读取节点 Orchestrator 对象并再次使用其函数
Read node Orchestrator object from a stringified file and use its function again
我正在使用 UiPath Orchestrator。这按预期运行。但我现在还想将身份验证减少到单个调用(而不是在请求 odata
时总是进行身份验证)。所以我的想法是将对象写入文件,然后在 odata
请求中读取该对象并重新使用它。
下面的orchestrator
对象来自new Orchestrator
的构造函数。该对象已准备好使用并具有以下结构(通过 console.log(orchestrator)
):
在我的工具中,我需要 odata
的对象函数。所以这有效:
console.log(orchestrator['v2']['odata']);
我现在想将该对象另存为文件以便能够重新使用它,所以我这样做了:
fs.writeFileSync('./data.json', orchestrator, 'utf-8')
但遗憾的是我得到了错误:
Converting circular structure to JSON
这是因为节点包正在使用循环结构。所以我的想法是使用 circular-json
包来解决这个问题:
const {parse, stringify} = require('circular-json');
...
var savetofile = stringify(orchestrator);
...
var readfromfile = parse(savetofile);
...
console.log(readfromfile['v2']['odata']);
但遗憾的是 readfromfile['v2']['odata']
不再可用。原因是 stringify(orchestrator)
已经缩小得太重了:
那么我是如何实现能够从文件中读取 Orchestrator 对象并能够再次使用这些函数的呢?还是在我的情况下使用记忆工具更有用?
问题不位于 Orchestrator 对象本身。所以不需要做单一的认证。
我的问题是我将 res.send
放在回调之外。所以它从不等待 REST api 调用的实际完成。
这是基本代码,它只获取第一个请求的静态结果,它从未更新结果:
app.get('/jobs', function (req, res) {
...
var orchestrator = require('./authenticate');
var results = {};
var apiQuery= {};
orchestrator.get('/odata/Jobs', apiQuery, function (err, data) {
for (row in data) {
results[i] =
{
'id' : row.id,
...
};
}
});
return res.send({results});
});
解决办法是移动res.send({results});
到orchestrator.get
,然后正确覆盖结果因为它正确等待回调:
app.get('/jobs', function (req, res) {
...
var orchestrator = require('./authenticate');
var results = {};
var apiQuery= {};
orchestrator.get('/odata/Jobs', apiQuery, function (err, data) {
for (row in data) {
results[i] =
{
'id' : row.id,
...
};
}
return res.send({results});
});
});
我正在使用 UiPath Orchestrator。这按预期运行。但我现在还想将身份验证减少到单个调用(而不是在请求 odata
时总是进行身份验证)。所以我的想法是将对象写入文件,然后在 odata
请求中读取该对象并重新使用它。
下面的orchestrator
对象来自new Orchestrator
的构造函数。该对象已准备好使用并具有以下结构(通过 console.log(orchestrator)
):
在我的工具中,我需要 odata
的对象函数。所以这有效:
console.log(orchestrator['v2']['odata']);
我现在想将该对象另存为文件以便能够重新使用它,所以我这样做了:
fs.writeFileSync('./data.json', orchestrator, 'utf-8')
但遗憾的是我得到了错误:
Converting circular structure to JSON
这是因为节点包正在使用循环结构。所以我的想法是使用 circular-json
包来解决这个问题:
const {parse, stringify} = require('circular-json');
...
var savetofile = stringify(orchestrator);
...
var readfromfile = parse(savetofile);
...
console.log(readfromfile['v2']['odata']);
但遗憾的是 readfromfile['v2']['odata']
不再可用。原因是 stringify(orchestrator)
已经缩小得太重了:
那么我是如何实现能够从文件中读取 Orchestrator 对象并能够再次使用这些函数的呢?还是在我的情况下使用记忆工具更有用?
问题不位于 Orchestrator 对象本身。所以不需要做单一的认证。
我的问题是我将 res.send
放在回调之外。所以它从不等待 REST api 调用的实际完成。
这是基本代码,它只获取第一个请求的静态结果,它从未更新结果:
app.get('/jobs', function (req, res) {
...
var orchestrator = require('./authenticate');
var results = {};
var apiQuery= {};
orchestrator.get('/odata/Jobs', apiQuery, function (err, data) {
for (row in data) {
results[i] =
{
'id' : row.id,
...
};
}
});
return res.send({results});
});
解决办法是移动res.send({results});
到orchestrator.get
,然后正确覆盖结果因为它正确等待回调:
app.get('/jobs', function (req, res) {
...
var orchestrator = require('./authenticate');
var results = {};
var apiQuery= {};
orchestrator.get('/odata/Jobs', apiQuery, function (err, data) {
for (row in data) {
results[i] =
{
'id' : row.id,
...
};
}
return res.send({results});
});
});