[
https://issues.apache.org/jira/browse/TINKERPOP-3186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18030461#comment-18030461
]
ASF GitHub Bot commented on TINKERPOP-3186:
-------------------------------------------
xiazcy commented on code in PR #3242:
URL: https://github.com/apache/tinkerpop/pull/3242#discussion_r2437374915
##########
gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.js:
##########
@@ -311,10 +311,30 @@ class TraversalStrategySerializer extends TypeSerializer {
}
}
+/**
+ * Helper function to deserialize properties into arrays of VertexProperty or
Property according to graphSONV3.
+ */
+function deserializeProperties(value, reader) {
+ let properties = [];
+ if ('properties' in value) {
+ const props = reader.read(value['properties']);
+ if (props !== null && props !== undefined) {
+ properties = Object.entries(props).flatMap(([key, values]) => {
+ if (Array.isArray(values) && values.length > 0 && values[0] instanceof
g.VertexProperty) {
+ return values; // Flatten VertexProperty arrays
+ }
+ return values instanceof g.Property ? values : new g.Property(key,
values); // create Property object when needed
+ });
+ }
+ }
+ return properties;
+}
+
class VertexSerializer extends TypeSerializer {
deserialize(obj) {
const value = obj[valueKey];
- return new g.Vertex(this.reader.read(value['id']), value['label'],
this.reader.read(value['properties']));
+ console.log(value);
Review Comment:
Oh yes, leftover.
> Inconsistency of properties data type on Element
> ------------------------------------------------
>
> Key: TINKERPOP-3186
> URL: https://issues.apache.org/jira/browse/TINKERPOP-3186
> Project: TinkerPop
> Issue Type: Improvement
> Components: javascript
> Affects Versions: 3.7.4
> Reporter: Stephen Mallette
> Assignee: Stephen Mallette
> Priority: Blocker
> Labels: breaking
>
> The {{properties}} property on {{Element}} in javascript has datatypes
> inconsistent with Java and other GLVs where it can be a {{Map}}, {{List}} or
> {{undefined}} depending on serializer or other factors (and we go through
> great lengths to assert all of this in tests for some reason). The type
> should be {{List}}. Use an empty list if {{null}} or {{undefined}}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)