数据存储嵌入式实体的自动ID(NodeJS客户端)

时间:2017-11-03 16:15:49

标签: node.js google-app-engine google-cloud-datastore

相关:Automatic ID for embedded entity

我希望在NodeJS中做同样的事情,就像在Java中的链接帖子中做的那样,但是假设库的Node版本中没有Entity或EmbeddedEntity类型(尽我所能)找到),我不知道该怎么做。我正在保存一组嵌入式实体,每个实体上都有2个键。我希望能够为密钥自动生成值 - 保存,让我们称之为embeddedEntityKey,而不必担心在我的代码中生成随机值。可能的?

1 个答案:

答案 0 :(得分:1)

我猜你在这里混淆了两个词。 在java中,很多工作都是由客户端库完成的,包括丰富的数据存储映射技术。在节点中,有两种实体可以存储在父实体中。

  1. 您可以指定属性并将对象放入其中。在这种情况下你 只会将普通对象写入属性,这不会 成为和嵌入实体。 例如:

    db.save({ 
        key: db.key(["SomeKind"]), 
        data: { 
            object: {
                someVal: 1
            }
        }
    });
    
  2. 您需要指定父ID才能创建真正的嵌入实体。

    db.save({ 
        key: db.key({
            path: ["SomeParentKind", "ParentIdOrName", "EmbededEntityKind"]
        }), 
        data: {
            someVal: 1
        }
    });
    
  3. 不久之后,在Node.js中嵌入式实体的创建机制是不同的。 在这里,您可以找到有关在Node.js环境中使用数据存储区的更多详细信息。 https://cloud.google.com/datastore/docs/concepts/entities#datastore-basic-entity-nodejs

    具体来说,请查看文档中的祖先部分。 https://cloud.google.com/datastore/docs/concepts/entities#ancestor_paths

    更新2

    使用Node.js中的数据存储保存可能性。

    获取后保存

    db.get(db.key(["MyKind", db.int("123123123")]))
        .then(results => {
            let entity = results[0];
            entity.prop = 1;
            return db.save(entity);
        });
    

    使用写入密钥对对象进行初始保存

    let object = {
        prop: 1,
        [db.KEY]: db.key(["MyKind"])
    };
    
    db.save(object);
    

    使用传递键作为保存参数进行初始保存

    let object = {
        prop: 1
    };
    
    let key = db.key(["MyKind"]);
    
    db.save({
        key: key,
        data: object
    });