当前位置: 首页 > 知识库问答 >
问题:

如何在Angular应用中使用OrientDB HTTP API?

白星海
2023-03-14

我试图从角度服务方法查询OrientDB。但获取身份验证是一个相关错误。根据我目前的理解,我需要两个GET请求才能成功查询OrientDB。

  1. 身份验证调用。即请求http://localhost:2480/connect/

但是我在浏览器控制台中遇到了这些错误:

    < li>XMLHttpRequest无法加载http://localhost:2480/connect/atu db。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“http://localhost:8080”。 < Li > GET http://localhost:2480/query/atu db/SQL/select @ rid as rid,runOfDay from test result where executor platform data . machine name = ' nite shk ' 401(未授权) < li>XMLHttpRequest无法从TestResult加载http://localhost:2480/query/atu db/SQL/select @ rid as rid,runOfDay,其中executorplatformdata . machine name = ' nite shk '。请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许访问源“http://localhost:8080”。响应的HTTP状态代码为401。

以下是角度服务的代码

angular.module('ReportApp')
    .factory('orientdbService', ['$http', '$log', '$q', 
        function($http, $log, $q) {
            'use strict';

            var fac = {};

            fac.config = appConfig;

            fac.query = function(sql, callback) {
                $log.log('Query: '+ sql);

                var url=encodeURI(this.config.orientBaseUrl+"query/"+this.config.dbName+"/sql/"+sql);
                $log.log('Request URI: '+ url);

                connectOrientDb()
                .then($http.get(url)
                    .then(function(response){ //Success
                            callback(response.data);
                        },
                        function(response){ //Failure
                            callback({
                                responseStatus: response.status,
                                responseData: response.data 
                            });
                        }));
            }

            fac.fetchCurrentDayReportIdList = function(hostMachineName){
                if(typeof(hostMachineName)  === "undefined"){
                    throw { 
                        name:        "Parameter Missing", 
                        level:       "Show Stopper", 
                        message:     "Error detected. This function prameter 'hostMachineName' is mandatory to evaluate return value.", 
                        htmlMessage: "Error detected. This function prameter '<code>hostMachineName</code>' is mandatory to evaluate return value.",
                        toString:    function(){return this.name + ": " + this.message;} 
                    }; 
                }

                var sql = "select @rid as rid, runOfDay from TestResult where executorPlatformData.machineName='"+hostMachineName+"'";

                var defer = $q.defer()
                this.query(sql,
                        function(data){
                            defer.resolve(data);
                        });
                return defer.promise;

            }

            var connectOrientDb = function(){
                var url=encodeURI(appConfig.orientBaseUrl+"connect/"+appConfig.dbName);
                var req ={
                             method: 'GET',
                             url: url,
                             headers: {
                               'Authorization': appConfig.authPayload
                             }
                         };
                $log.log('Request: '+req);
                var defer = $q.defer();
                $http(req).then(
                        function(res){ //Success
                            $log.log('Response: '+res);
                            defer.resolve(res);
                        }, 
                        function(res){ //Failure
                            /*throw {
                                name:   "Connection Failed",
                                level:  "Show Stopper",
                                message: "Error detected ("+response.status+"). Unable to connect to configured database.",
                                htmlMessage: "Error detected ("+response.status+"). Unable to connect to configured database.",
                                toString:    function(){return this.name + ": " + this.message;}
                            };*/
                            defer.reject(res);
                        }
                    );
                return defer.promise;
            }

            return fac;

        }
    ]);

调用< code > fetchCurrentDayReportIdList()时出现错误。谁能给我一个参考实现或者指出我的代码有什么问题吗?

注意:

全局变量appConfig包含一个格式如下的JSON对象。

    {
        "orientBaseUrl": "http://localhost:2480/",
        "dbName": "atudb",
        "dbUser": "root",
        "authPayload": "cm9vdDphZG1pbg==",
        "dbPassword": "admin",
        "formatDateTime": "yyyy-MM-dd HH:mm:ss"
    }

共有1个答案

高夜洛
2023-03-14

在< code>appConfig中,尝试在authPayLoad中添加< code>Basic

“AuthPayload”:“基本cm9vdDphZG1pbg==”

当然,像上面所说的@wolf4ood那样启用CORS。

 类似资料:
  • 问题内容: 我有一个利用SignalR与桌面应用程序通信的应用程序。要使用SignalR,我需要在.ts文件中使用jQuery。但是,从Angular 7迁移到Angular 8后,它似乎不起作用。 我像以前的Angular版本一样使用。不幸的是,$现在向控制台输出空白。 那么,Angular v8不再支持这种方式使用jQuery,还是在迁移过程中出现其他问题? 更新: 我有通过npm加载的jQu

  • 问题内容: 我尝试将Angular与Bluebird Promise一起使用: HTML: JS: [ 小提琴 ] 但是,无论我尝试了什么,它都保持不变并且没有更新。除非我添加了手册,否则我会避免使用。 如何让Bluebird与AngularJS一起使用? (我知道这是可能的,因为$ q可以这样做) 我正在使用Bluebird2.0,我在这里。 问题答案: 这是可能的,甚至很容易! 好吧,如果我们

  • 问题内容: 基础 角1.1.5- http ://plnkr.co/edit/eoKt8o4MJw9sWdYdeG3s? p= preview-作品 上调 角度1.2.6- http ://plnkr.co/edit/WopgAtFNVm1mKf5Li99h? p= preview-失败 我认为我确实遵循了文档中的说明-http: //docs.angularjs.org/api/ngAnimat

  • 问题内容: 我已经能够让控制器将$ on侦听器与一起使用。 但我看不到任何有关如何获取服务以监听事件的文档。 我试过了,但是只允许一个听众。我希望多个服务中的侦听器,无论其父控制器是否在作用域内。 问题答案: 经过一番试验后,事实证明,使用最少的代码即可将事件发送到服务。 如果有其他人遇到此问题,请遵循示例服务代码。 该样本在获得相应广播后将服务模型保存并还原到本地存储中

  • 有人在指令中被监视。 在这种情况下,只有在apply存在时才触发watch。

  • 我正在使用Angular 4和Cordova创建一个混合应用程序,因为我想用单一代码库同时面向桌面和移动平台。我遵循了项目的以下目录结构: 我正在angular 4中开发应用程序,并使用angular CLI进行构建。我有一个钩子,它将角度构建复制到cordova“www”文件夹中,然后我创建apk。问题是我想在我的cordova应用程序中使用FCM(Firebase Cloud Messagin