- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试在 node.js 应用程序中用 ArangoDB 替换 OrientDB,但我无法让事务正常工作。此代码创建一个 pmsite 文档、一个 pmprojcat 文档以及两者之间的关系 (pm_child)。该代码返回 403:禁止。但是,如果我在 arangosh(非事务性)中运行函数体,它就可以正常工作。我在代码中的其他非事务性请求运行没有问题。
这是失败的代码片段:
db.transaction(tables, actions, function (err, result) {
console.log('collection:', tables);
console.log('actions:', actions);
console.log('err:', err);
if (err) data.pms.makeError(data, queue, 'Create Object: ' + err.message);
else {...}
控制台结果是:
collection: { write: [ 'pmsite', 'pmprojcat', 'pm_child' ] }
actions: function(){var db=require("org/arangodb").db;db._useDatabase("gdp2_server");var graph=require("org/arangodb/general-graph")._graph("gdp2_graph");var v=graph.pmsite.save({"connection":"localhost:1680","protocol":"p4+icm","name":"site1","kind":"site","model":"oldGDP","uri":"$(site:protocol)://$(site:connection)/depot/icm/proj/$(project)/$(variant)/$(vartype:dir)/$(library)/..."});var c=graph.pmprojcat.save({"kind":"projcat","name":"."});graph.pm_child.insert(v._id,c._id,{});return v;}
err: { [ArangoError: forbidden]
name: 'ArangoError',
message: 'forbidden',
errorNum: 11,
code: 403,
stack: 'ArangoError: forbidden\n at new ArangoError (/home/gary/icManager/gdp2_server/node_modules/arangojs/lib/error.js:24:15)\n at /home/gary/icManager/gdp2_server/node_modules/arangojs/lib/connection.js:126:19\n at callback (/home/gary/icManager/gdp2_server/node_modules/arangojs/lib/util/request.js:90:12)\n at IncomingMessage.<anonymous> (/home/gary/icManager/gdp2_server/node_modules/arangojs/lib/util/request.js:98:11)\n at IncomingMessage.emit (events.js:129:20)\n at _stream_readable.js:908:16\n at process._tickDomainCallback (node.js:381:11)',
response:
{ _readableState:
{ objectMode: false,
highWaterMark: 16384,
buffer: [],
length: 0,
pipes: null,
pipesCount: 0,
flowing: true,
ended: true,
endEmitted: true,
reading: false,
sync: true,
needReadable: false,
emittedReadable: false,
readableListening: false,
defaultEncoding: 'utf8',
ranOut: false,
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null,
resumeScheduled: false },
readable: false,
domain: null,
_events: { end: [Object], data: [Function] },
_maxListeners: undefined,
socket:
{ _connecting: false,
_hadError: false,
_handle: [Object],
_host: 'localhost',
_readableState: [Object],
readable: true,
domain: null,
_events: [Object],
_maxListeners: undefined,
_writableState: [Object],
writable: true,
allowHalfOpen: false,
destroyed: false,
bytesRead: 1564,
_bytesDispatched: 5409,
_pendingData: null,
_pendingEncoding: '',
parser: null,
_httpMessage: [Object],
read: [Function],
_consuming: true },
connection:
{ _connecting: false,
_hadError: false,
_handle: [Object],
_host: 'localhost',
_readableState: [Object],
readable: true,
domain: null,
_events: [Object],
_maxListeners: undefined,
_writableState: [Object],
writable: true,
allowHalfOpen: false,
destroyed: false,
bytesRead: 1564,
_bytesDispatched: 5409,
_pendingData: null,
_pendingEncoding: '',
parser: null,
_httpMessage: [Object],
read: [Function],
_consuming: true },
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
headers:
{ server: 'ArangoDB',
connection: 'Keep-Alive',
'content-type': 'application/json; charset=utf-8',
'content-length': '450' },
rawHeaders:
[ 'Server',
'ArangoDB',
'Connection',
'Keep-Alive',
'Content-Type',
'application/json; charset=utf-8',
'Content-Length',
'450' ],
trailers: {},
rawTrailers: [],
_pendings: [],
_pendingIndex: 0,
upgrade: false,
url: '',
method: null,
statusCode: 403,
statusMessage: 'Forbidden',
client:
{ _connecting: false,
_hadError: false,
_handle: [Object],
_host: 'localhost',
_readableState: [Object],
readable: true,
domain: null,
_events: [Object],
_maxListeners: undefined,
_writableState: [Object],
writable: true,
allowHalfOpen: false,
destroyed: false,
bytesRead: 1564,
_bytesDispatched: 5409,
_pendingData: null,
_pendingEncoding: '',
parser: null,
_httpMessage: [Object],
read: [Function],
_consuming: true },
_consuming: true,
_dumped: false,
req:
{ domain: null,
_events: [Object],
_maxListeners: undefined,
output: [],
outputEncodings: [],
outputCallbacks: [],
writable: true,
_last: false,
chunkedEncoding: false,
shouldKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedHeader: [Object],
_hasBody: true,
_trailer: '',
finished: true,
_hangupClose: false,
_headerSent: true,
socket: [Object],
connection: [Object],
_header: 'POST /_db/gdp2_server/_api/transaction HTTP/1.1\r\ncontent-type: application/json\r\ncontent-length: 598\r\nx-arango-version: 20300\r\nHost: localhost:8529\r\nConnection: keep-alive\r\n\r\n',
_headers: [Object],
_headerNames: [Object],
agent: [Object],
socketPath: undefined,
method: 'POST',
path: '/_db/gdp2_server/_api/transaction',
parser: null,
res: [Circular] },
read: [Function],
body:
{ exception: '[ArangoError 11: forbidden]',
stacktrace: [Object],
message: 'forbidden',
error: true,
code: 403,
errorNum: 11,
errorMessage: 'forbidden' },
rawBody: '{"exception":"[ArangoError 11: forbidden]","stacktrace":["[ArangoError 11: forbidden]"," at Error (native)"," at eval (<anonymous>:1:57)"," at eval (<anonymous>:1:497)"," at post_api_transaction (/usr/share/arangodb/js/actions/api-transaction.js:268:16)"," at Function.actions.defineHttp.callback (/usr/share/arangodb/js/actions/api-transaction.js:288:11)"],"message":"forbidden","error":true,"code":403,"errorNum":11,"errorMessage":"forbidden"}' } }
最佳答案
@ggendel:您关于 _useDatabase()
是问题来源的推理是正确的:不允许事务在其间更改数据库,也不允许或多个其他服务器端操作,例如Foxx Action 。
为了让事务在不同的数据库中运行,需要事先在客户端切换到另一个数据库。
关于node.js - 来自 node.js 应用程序的 ArangoDB 事务请求返回 403 : forbidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34684143/
我一直收到这个“禁止您无权访问此服务器上的/。此外,在尝试使用 ErrorDocument 处理请求时遇到 403 禁止错误。”当尝试访问我的网站时,错误仍然存在,但没有安装 WordPress
我对Kibana创建的“新用户”有问题(使用用户“ flex ”)。这是我做的顺序。 我正在使用ELK for 7.5.1版本 首先,我通过添加elasticsearch.yml 来启用xpack.s
我只是在Elasticsearch 7.1.0中设置了xpack 如下在elasticsearch.yml中: xpack.security.enabled: true discovery.type:
我刚刚在新安装的 ES 堆栈上设置了身份验证。 我跟着: https://www.elastic.co/guide/en/elastic-stack-overview/current/get-star
我尝试在我的 Spring Boot 应用程序上配置 OpenFeign,我使用 pokeapi 进行测试。 我编写了这段代码: @FeignClient(value = "pokeapi", url
我正在使用strapi,我在调用api时收到错误403 Forbidden,例如http://localhost:1337/data 我已经调用了所有的 API,结果是相同的 403 错误 我也用 p
当我尝试将图片上传到“汽车”对象时,我被拒绝访问 S3。但是自从我添加了 S3 以来,assets 文件夹中的站点图像显示得很好。我得到的具体错误是这样的: 2015-02-17T14:40:48.4
当我尝试在管理员授权后添加新帖子时看到此响应。 我有基于 Spring Boot 安全性的基本授权: @Configuration @EnableWebSecurity public class Se
我有一个响应式(Reactive)(Spring WebFlux)Web 应用程序,其中很少有 protected 资源的 REST API。(Oauth2)。要手动访问它们,我需要获取具有客户端凭据
可以看到的错误是 client.GetKeyStats 函数返回的 403 Forbidden。 基于源代码无需认证。 源代码:https://github.com/timpalpant/go-iex
堆栈跟踪 Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Servic
几天前,当我尝试将文件推送到我的 S3Bucket 时收到此异常。更早的一切似乎都能正常工作,我确信我这边没有代码更改。 com.amazonaws.services.s3.model.AmazonS
当用户尝试访问他们无权访问的资源时,我的服务器会返回 403 禁止错误。除了 header 之外,服务器还会写入一条描述错误的小消息。 在 Firefox 中,错误消息显示得很好,用户知道发生了什么。
我支持一个 java 应用程序,它有一个搜索栏,可以匹配关键字并从缓存中获取结果。 该应用程序在 Tomcat 中运行,并且还有一个 Apache Web 服务器。 搜索 aaa' 时出现问题,特殊字
我正在将网站从一台托管服务器移动到另一台托管服务器。我已经上传了文件。我正在使用表单例份验证。基本上,我要搬到 GoDaddy。 我可以直接访问登录表单:www.mysite.com/login.as
我创建了一个 Azure KeyVault,我希望我的应用服务能够访问它。据我所知,我的 App Service 的主体应该有权访问 KeyVault,但在尝试从中检索时,我总是收到以下错误。无论我是
我尝试通过应用上的 URLRequest 将 multipart/form-data 发送到 Cloud Functions for Firebase。为了测试我的云函数和应用程序是否已连接,我创建了
这是后端 SiteController.php 访问规则。当我浏览此 url site.com/backend/web/site/login 时。它显示禁止 (#403)。 return [
使用 java 访问 Google PubSub、Dataflow 和 BigQuery 的 Spring boot 应用程序。该应用程序是使用 maven 构建的,并将 jar 文件复制到 Goog
我在 Kubernetes* 的仪表板站点上到处都是“被禁止”(见图) 重现: 通过站点创建 Google Kubernetes 集群,而不是通过 shell。 选择 Kubernetes 版本 1.
我是一名优秀的程序员,十分优秀!