类:Mongo::Error::Parser Private

继承:
对象
  • 对象
显示全部
包括:
SdamErrorDetection
定义于:
lib/mongo/error/parser.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

用于解析 MongoDB 命令响应中可能出现的各种错误形式的类。

服务器可以通过多种方式报告错误:

  • ok: 0响应表示失败。 在较新的服务器中,应设置 code、codeName 和 errmsg 字段。 在较旧的服务器中,有些可能未设置。
  • ok: 1响应,附带写关注错误(writeConcernError 顶级字段)。 这表示响应的节点已成功执行请求,但没有足够的其他节点成功执行请求,无法满足写关注。
  • ok:带有 writeErrors 顶级字段的1响应。 这可以在批量写入中获得,也可以在非批量写入中获得。 在非批量写入中,writeErrors 列表中应该只有一个错误。 出现多个错误的情况由 BulkWrite::Result 处理。
  • ok:带有 writeConcernErrors 顶级字段的1响应。 它只能在批量写入中获得,并由 BulkWrite::Result 而不是此类处理。

请注意,writeErrors 没有 codeName 字段,它们仅提供代码和消息。 同样,writeConcernErrors 可能不提供代码名称。

由于:

  • 2.0.0

常量摘要

SdamErrorDetection 中包含的常量

SdamErrorDetection::NODE_RECOVERING_CodeSSdamErrorDetection::NODE_SHUTTING_down_CodeSSdamErrorDetection::NOT_MASTER_CodeS

实例属性摘要折叠

类方法摘要折叠

实例方法摘要折叠

SdamErrorDetection 中包含的方法

#node_recovering? , #node_shutting_down? , #not_master?

构造函数详情

#initialize (文档, replies = nil, options = nil) ⇒解析器

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

使用返回的文档创建新的解析器。

例子:

创建新的解析器。

Parser.new({ 'errmsg' => 'failed' })

参数:

  • 文档 ( BSON::Document )

    返回的文档。

  • 回复 (Array<Protocol::Message>) (默认为: nil

    消息回复。

  • 选项 哈希 (默认为: nil

    选项。

由于:

  • 2.0.0



85
86
87
88
89
90
91
92
93
94
# File 'lib/ Mongo/error/parser.rb', line 85

def 初始化(文档, 回复 = nil, 选项 = nil)
  @document = 文档 || {}
  @replies = 回复
  @options = if 选项
               选项.dup
             else
               {}
             end.冻结
  parse!
end

实例属性详细信息

# code整数(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回值 从文档中解析出的错误代码。

返回:

  • ( Integer )

    从文档中解析的错误代码。

由于:

  • 2.6.0



62
63
64
# File 'lib/ Mongo/error/parser.rb', line 62

def 代码
  @code
end

# code_namestring (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回值 从文档中解析出的错误代码名称。

返回:

  • ( string )

    从文档中解析的错误代码名称。

由于:

  • 2.6.0



66
67
68
# File 'lib/ Mongo/error/parser.rb', line 66

def code_name
  @code_name
end

# documentBSON::Document (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 返回的文档。

返回:

  • ( BSON::Document )

    返回的文档。

由于:

  • 2.0.0



47
48
49
# File 'lib/ Mongo/error/parser.rb', line 47

def 文档
  @document
end

# labelsArray<String> (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回与错误关联的标签集。

返回:

  • ( Array<String> )

    与错误相关的标签集。

由于:

  • 2.7.0



70
71
72
# File 'lib/ Mongo/error/parser.rb', line 70

def labels
  @labels
end

# messagestring (readonly)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回要在引发的异常中使用的完整错误消息。

返回:

  • ( string )

    在引发的异常中使用的完整错误消息。

由于:

  • 2.0.0



51
52
53
# File 'lib/ Mongo/error/parser.rb', line 51

def message
  @message
end

#repliesArray<Protocol::Message> (readonly)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 回复消息。

返回:

由于:

  • 2.0.0



58
59
60
# File 'lib/ Mongo/error/parser.rb', line 58

def 回复
  @replies
end

# server_messagestring (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回值 从响应中解析出的服务器返回的错误消息。

返回:

  • ( string )

    从响应中解析出服务器返回的错误消息。

由于:

  • 2.0.0



55
56
57
# File 'lib/ Mongo/error/parser.rb', line 55

def server_message
  @server_message
end

# wtimeout对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



73
74
75
# File 'lib/ Mongo/error/parser.rb', line 73

def wtimeout
  @wtimeout
end

类方法详细信息

build_message (code: nil, code_name: nil, message: nil) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/ Mongo/error/parser.rb', line 140

def build_message(代码: nil, code_name: nil, 消息: nil)
  if code_name && 代码
    " [ #{ code } : #{ code_name } ]: #{ message } "
  elsif code_name
    # 如果有代号,这种情况绝对不应该发生
    # 还应该提供代码。
    # 为了完整性起见,处理这种情况。
    " [ #{ code_name } ]: #{ message } "
  elsif 代码
    " [ #{ code } ]: #{ message } "
  else
    message
  end
end

实例方法详细信息

# write_concern_error?true | false

返回文档是否包含写关注错误。 故障可能具有顶级错误和写关注错误,或两者之一。

返回:

  • ( true | false )

    文档是否包含写关注错误。 故障可能具有顶级错误和写关注错误,或两者之一。

由于:

  • 2.10.0



102
103
104
# File 'lib/ Mongo/error/parser.rb', line 102

def write_concern_error?
  !!write_concern_error_document
end

# write_concern_error_code整数 | nil

如果存在写关注错误并具有代码,则返回该写关注错误的错误代码。

返回:

  • ( Integer | nil )

    写关注错误的错误代码(如果存在写关注错误并具有代码)。

由于:

  • 2.10.0



120
121
122
# File 'lib/ Mongo/error/parser.rb', line 120

def write_concern_error_code
  write_concern_error_document && write_concern_error_document[' code ']
end

# write_concern_error_code_namestring | nil

返回 如果写关注错误存在且具有代码名称,则为写关注错误的代码名称。

返回:

  • ( string | nil )

    如果写关注(write concern)错误存在且具有代码名称,则为写关注(write concern)关注错误的代码名称。

由于:

  • 2.10.0



129
130
131
# File 'lib/ Mongo/error/parser.rb', line 129

def write_concern_error_code_name
  write_concern_error_document && write_concern_error_document[' codeName ']
end

# write_concern_error_document哈希 | nil

返回服务器报告的写关注错误文档(如果有)。

返回:

  • ( Hash | nil )

    向服务器报告的写关注错误。

由于:

  • 2.0.0



111
112
113
# File 'lib/ Mongo/error/parser.rb', line 111

def write_concern_error_document
  文档[' writeConcernError ']
end

# write_concern_error_labelsArray<String> | nil

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

写关注错误(如果存在写关注错误)。

返回:

  • ( Array<String> | nil )

    与此相关的错误标签

由于:

  • 2.0.0



135
136
137
# File 'lib/ Mongo/error/parser.rb', line 135

def write_concern_error_labels
  write_concern_error_document && write_concern_error_document['errorLabels']
end