创建 rest api 以从 odoo erp 检索数据

Create rest api to retrieve data from odoo erp

我正在创建一个休息 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]:将它们发送到客户端后无法设置 headers

你能帮我看看我哪里错了吗?

response.status(200).json(value)响应客户端并结束交易(就像response.end()response.sendFile()等)。

它只能被调用一次,但你执行了两次(一次在 console.log() 中,一次在 "for real" 下一行)。这就是为什么 headers 是 "already sent".

去掉console.log中无用的response.json(),只记录你想看的value