Node.js 返回带节点的api rest

Node.js 返回带节点的api rest,node.js,odoo,nestjs,xml-rpc,Node.js,Odoo,Nestjs,Xml Rpc,我正在尝试使用Nestjs和ODOOXMLRPC为Odoo-ERP生成RESTAPI。我可以连接到odoo,但我不能响应比odoo响应我的服务的值 这是响应值或错误的odoo服务: import { Injectable, OnModuleInit } from '@nestjs/common'; @Injectable() export class OdooService { private Odoo = require('odoo-xmlrpc'); public odoo

我正在尝试使用Nestjs和ODOOXMLRPC为Odoo-ERP生成RESTAPI。我可以连接到odoo,但我不能响应比odoo响应我的服务的值

这是响应值或错误的odoo服务:

import { Injectable, OnModuleInit } from '@nestjs/common';
@Injectable()
export class OdooService  {
    private Odoo = require('odoo-xmlrpc');
    public odoo;
    constructor () {
        this.odoo = new this.Odoo({
            url: 'https:/www.xxxxxxxxx.xxx',
            db: 'xxxx',
            username: 'username',
            password: 'password'
        });
    }

    execute(model: string, funtion: string , params: any[], callback) {
        const odoo = new this.Odoo({
            url: 'https:/www.xxxxxxxxx.xxx',
            db: 'xxxx',
            username: 'username',
            password: 'password'
        });
        odoo.connect(async function (error: any): Promise<any> {
            if (error) {
                console.log(error); 
                return [{}];
            }
            odoo.execute_kw(model, funtion, params, function (error: any, values: []) {
               if (error) { 
                   console.log('error :>> ', error);
                   return [{}];
               }
               callback(values);
            })

        })
    }
}
odoo文档:
库文档:

将@charlietfl的注释细化为答案,您可以使用以下代码之一,使用回调或异步等待

没有承诺,没有回访

findAll(){
返回这个.odooService.execute('res.country','search_read',[[[]],{fields:['name']}]);
}
使用回调,无需承诺

findAll(){
这个.odooService.execute('res.country','search_read',[[[]],{fields:['name']}],函数(响应:[]){
返回响应;
});
}
使用承诺

async findAll(){
const response=wait this.odooService.execute('res.country','search_read',[[[]],{fields:['name']}]);
返回响应;
}

使用回调和承诺的方法令人困惑。没有显示使用的承诺会使所有的
等待
异步
无效。回调中的
返回
也不会返回到外部函数。您要么需要重构所有这些以实现它,要么使用标准回调方法
import { Injectable } from '@nestjs/common';
import { OdooService } from '../odoo/odoo.service';
import { CreateCountryDto } from './dto/create-country.dto';
import { UpdateCountryDto } from './dto/update-country.dto';

@Injectable()
export class CountriesService {
  constructor(
    private odooService: OdooService
) {}

  async findAll() {
     return await this.odooService.execute('res.country', 'search_read', [[[]], { fields: ['name'] }], async function (response: []) {
      //  console.log(response);
       return  await response;
     });
  }

}