You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gremlin JavaScript中如何为顶点设置长整型(Long)属性?

问题

使用JavaScript/TypeScript代码操作Gremlin图数据库时,需要为顶点设置长整型(Long)属性值,需明确正确实现方式。

问题原因

JavaScript中的number类型在Java、C#等后端生态中默认会按double双精度浮点类型解析,直接传入普通数值无法正确映射为数据库的长整型类型,错误示例代码如下:

public static async experiment(): Promise<any> {
    const g = GremlinDb.g;
    await g.addV("test")
        .property("number", 3).iterate();
    return {};
}
正确实现方式

Gremlin官方JavaScript/TypeScript客户端内置了Long类型的序列化适配能力,直接使用包内导出的Long工具类构造长整型值传入即可:

  1. 首先从gremlin依赖包中导入Long工具:
import { Long } from 'gremlin';
  1. 写入属性时,将原生数值转换为Long实例后传入属性方法,修正后的代码如下:
public static async experiment(): Promise<any> {
    const g = GremlinDb.g;
    await g.addV("test")
        // 用Long.fromNumber将普通数值转为Gremlin可识别的长整型对象
        .property("number", Long.fromNumber(3)).iterate();
    return {};
}

注意事项

  • 若需要存储的长整型值超过JavaScript安全整数范围(即大于2^53 - 1),不要使用Long.fromNumber转换,需通过Long.fromString传入数字字符串构造Long实例,避免原生number带来的精度丢失:
    // 处理超大长整型值示例
    const bigLongVal = Long.fromString("9007199254740993")
    
  • 必须使用gremlin客户端官方导出的Long类构造值,不要自定义普通对象模拟Long结构,否则会出现Gremlin服务端反序列化失败、类型不匹配的问题。

内容的提问来源于stack exchange,提问作者Manabu Tokunaga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:51:43