1
我建立與angular2一個應用程序,必須能夠對數據獲取和插入Odoo數據庫中,爲此,我使用angular2-odoo-jsonrpc: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'
我假設我不知道w如何使用call函數:call(model,method,args,kwargs)。任何幫助?
嗨瑪麗亞, 你碰巧最初遇到下列問題運行嘗試通過角度連接到odoo實例?: XMLHttpRequest無法加載http:// odoo-server/web/session/authenticate。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。因此不允許訪問Origin'http:// localhost:4200'。該響應具有HTTP狀態代碼400. –
您應該添加此部分:#始終設置這些標頭。 標題始終設置Access-Control-Allow-Origin「*」 標題始終設置訪問控制 - 允許 - 方法「POST,GET,OPTIONS,DELETE,PUT」 標題始終設置Access-Control-Max-Age「1000」 標題始終設置Access-Control-Allow-Headers「x-requested-with,x-openerp-session-id,Content-Type,origin,authorization,accept,client-security-token」 標題始終設置Access-Control-允許標題x請求與x openerp會話id內容類型,起源,授權,接受,客戶端安全令牌 –
這是Odoo服務器的配置 –