2017-04-11 6 views
1

私はangular2-odoo-JSONRPCを使用しています、そのためには、Odooデータベースにデータをフェッチして挿入することができなければならangular2でアプリを構築しています:https://www.npmjs.com/package/angular2-odoo-jsonrpcどのように私のangular2アプリ経由でOdooで新しいプロジェクトを作成しますか?

と私はすべてのデータを取得することができました私はOdooから必要に応じて、しかし、私はまたOdooデータベースにデータを挿入することができるようにしたいので、私は、コードを次のように使用:

import { Component, OnInit } from '@angular/core'; 
import { OdooRPCService } from 'angular2-odoo-jsonrpc'; 
import { Http} from '@angular/http'; 
@Component({ 
selector: 'app-root', 
templateUrl: './app.component.html', 
styleUrls: ['./app.component.css'], 
providers: [OdooRPCService] 
}) 
export class AppComponent implements OnInit{ 

projectList; 
ngOnInit(){ 
let self = this; 
self.projectList = []; 
self.odooRPC.init({ 
odoo_server: "https://demo" 
}); 
self.odooRPC.login('DB', 'admin', 'admin').then(res => { 
console.log('login success'); 
}).catch(err => { 
console.error('login failed', err); 
}) 
self.odooRPC.call('project.project', 'create',"" ,{ 'name' :'New project'}) 
.then((projects:any) => { 
if(projects){ 
self.projectList = projects; 
} 
}) 
} 
constructor(private odooRPC: OdooRPCService){ 
}} 

が、私はこのエラーを取得しておいてください。

error_handler.js:54 EXCEPTION: Uncaught (in promise): Traceback (most recent call last): 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 648, in _handle_exception 
return super(JsonRequest, self)._handle_exception(exception) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 685, in dispatch 
result = self._call_function(**self.params) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 321, in _call_function 
return checked_call(self.db, *args, **kwargs) 
File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 118, in wrapper 
return f(dbname, *args, **kwargs) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 314, in checked_call 
result = self.endpoint(*a, **kw) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 964, in call 
return self.method(*args, **kw) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 514, in response_wrap 
response = f(*args, **kw) 
File "/usr/lib/python2.7/dist-packages/openerp/addons/web/controllers/main.py", line 888, in call_kw 
return self._call_kw(model, method, args, kwargs) 
File "/usr/lib/python2.7/dist-packages/openerp/addons/web/controllers/main.py", line 880, in _call_kw 
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) 
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 250, in wrapper 
return old_api(self, *args, **kwargs) 
TypeError: create() got an unexpected keyword argument 'fields' 

私は私が知らなかったとしますcall関数の使い方:call(model、method、args、kwargs)。どんな助け?

答えて

0

私は最終的に呼び出しメソッドのための右の引数を見つけることができるし、それが働いたと私はOdooデータベースに新しいプロジェクトを追加することができます。

import { Component, OnInit } from '@angular/core'; 
import { OdooRPCService } from 'angular2-odoo-jsonrpc'; 
import { Http} from '@angular/http'; 
@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'], 
    providers: [OdooRPCService] 
}) 
export class AppComponent implements OnInit{ 

    projectList; 
    ngOnInit(){ 
    let self = this; 
    self.projectList = []; 
    self.odooRPC.init({ 
     odoo_server: "https://demo" 
    }); 
    self.odooRPC.login('DB', 'admin', 'admin').then(res => { 
     console.log('login success'); 
    }).catch(err => { 
     console.error('login failed', err); 
    }) 
    **self.odooRPC.call('project.project', 'create',[{name:'New'}] , {})** 
     .then((projects:any) => { 
     if(projects){ 
     self.projectList = projects; 
     } 
    }) 
    } 
    constructor(private odooRPC: OdooRPCService){ 
    }} 
+0

こんにちはマリア、 あなたは最初に次の問題全体を実行するために起こりました角を介してodooインスタンスに接続しようとしていますか? XMLHttpRequestは、http:// odoo-server/web/session/authenticateをロードできません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。したがって、Origin 'http:// localhost:4200'はアクセスできません。応答はHTTPステータスコード400でした。 –

+1

このセクションを追加する必要があります:#これらのヘッダーは常に設定してください。 ヘッダーは常にAccess-Control-Allow-Origin "*"を設定します ヘッダーは常にアクセス制御許可メソッド "POST、GET、OPTIONS、DELETE、PUT"を設定します ヘッダーは常にアクセス制御 - ヘッダーは常に「Access-Control-Allow-Headers」を「x-requested-with、x-openerp-session-id、Content-Type、許可ヘッダー「x-requested-with、x-openerp-session-id、コンテンツタイプ、発信元、許可、クライアントセキュリティトークン」 –

+1

Odooサーバーの設定 –

関連する問題