我正在使用JavaScript和neo4j-driver保存一个 node 和一些与图形的关系.一切都按预期进行,但我希望读取写入结果,并在之后以特定格式输出,这是我遇到的问题.目前,我只返回了查询中的所有变量,但我希望输出采用以下特定格式:

{
  "name": p.name
  "colors: [
     {
        hex: c.hex
     }
     {
        hex: c.hex
     }
   ]
}

这是我的代码,非常感谢您的帮助:

export const savePallete = async (palette: Palette) => {
  if (!!palette.name === false) {
    throw Error("Palette name required!");
  }

  const writeQuery = `MERGE (p:Palette {name: $name})
   ON CREATE SET p.name = $name
   FOREACH (color IN $colors |
   MERGE (c:Color {hex: color.hex})
   ON CREATE SET c.hex = color.hex
   CREATE (p)-[i:INCLUDES]->(c))
   `;
  await session.writeTransaction((tx) =>
    tx.run(writeQuery, { name: palette.name, colors: palette.colors })
  );

  const readQuery = `
    MATCH (p:Palette)
    WHERE p.name = $name
    MATCH (p)-[:INCLUDES]->(c:Color)
    RETURN *
  `;
  const readResult = await session.readTransaction((tx) =>
    tx.run(readQuery, { name: palette.name })
  );
  return readResult;
};

例如,如果我用这个对象作为参数调用savePallete,我希望得到相同的结果:

{
    "name": "First test palette",
    "colors": [
        {
            "hex": "#123123"
        },
        {
            "hex": "#ffffff"
        },
        {
            "hex": "#000000"
        }
    ]
}

推荐答案

一种方法是将readQuery替换为(最后两行不同):

    MATCH (p:Palette)
    WHERE p.name = $name
    MATCH (p)-[:INCLUDES]->(c:Color)
    WITH COLLECT({hex: c.hex}) AS colors, p
    RETURN {name: p.name, colors: colors}

这将把 colored颜色 的十六进制收集为JSON,并返回JSON格式.

使用示例数据时:

MERGE (a:Palette {name: "First test palette"})
MERGE (b:Color {hex: "#123123"})
MERGE (c:Color {hex: "#ffffff"})
MERGE (d:Color {hex: "#000000"})
MERGE (a)-[:INCLUDES]-(b)
MERGE (a)-[:INCLUDES]-(c) 
MERGE (a)-[:INCLUDES]-(d) 

它会返回您的预期结果

Javascript相关问答推荐

在卡信息之间切换

如何通过继承contentitable属性的元素捕捉keydown事件?

基于每个索引迭代嵌套对象

React Hooks中useState的同步问题

可以的.是否可以在不预编译的情况下使用嵌套 Select 器?

在React中获取数据后,如何避免不必要的组件闪现1秒?

传递一个大对象以在Express布局中呈现

拖放仅通过 Select 上传

如何用拉威尔惯性Vue依赖下拉?

XSLT处理器未运行

Vaadin定制组件-保持对javascrip变量的访问

为什么在函数中添加粒子的速率大于删除粒子的速率?

JavaScript:如果字符串不是A或B,则

ngOnChanges仅在第二次调用时才触发

postman 预请求中的hmac/sha256内标识-从js示例转换

如果NetSuite中为空,则限制筛选

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

如何在FiRestore中的事务中使用getCountFromServer

ReactJS在类组件中更新上下文

找不到处于状态的联系人