我正在创建一个 REST API 服务来从 odoo erp 获取、放置、删除数据。
这是我的代码:
const Promise = require('bluebird');
Promise.promisifyAll(require('node-odoo').prototype);
const Odoo = require('odoo-xmlrpc');
const odoo = new Odoo({
url: 'zzzz',
port: 'zz',
db: 'zzzz',
username: 'zzzz',
password: 'zzz*'
});
var express = require('express'),
app = express(),
port = process.env.PORT || 3000;
this.router = express.Router();
app.listen(port);
console.log('todo list RESTful API server started on: ' + port);
this.router.get('/api/event/', (req, res) => {
return getEvent(req, res);
});
app.get('/getEvent', (request, response) => {
odoo.connect((err) => {
if(err) return console.log('Findeventlist error ' + err);
console.log('Findeventlist connected ' );
var inParams = [];
inParams.push([]);
inParams.push(['name' ])
inParams.push(0)
inParams.push(5)
var params = [];
params.push(inParams);
odoo.execute_kw('calendar.event', 'search_read', params, function (err, value) {
if (err) { return console.log(err) }
if(value){
console.log( 'Value is ' + response.status(200).json(value));
return response.status(200).json(value)
}
});
});
console.log(' odoo connected');
})
我收到此错误:错误 [ERR_HTTP_HEADERS_SENT]:将 header 发送到客户端后无法设置 header
你能帮我看看我哪里错了吗?
最佳答案
response.status(200).json(value)
响应客户端并结束事务(就像 response.end()
或 response. sendFile()
等)。
它必须只被调用一次,但你执行它两次(一次在 console.log() 内,然后在下一行“真正”执行一次)。这就是 header “已发送”的原因。
从 console.log 中删除无用的 response.json()
并仅记录您想要查看的值
。
关于javascript - 创建rest api以从odoo erp检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59736832/