express-cassandra - 无法将模型对象映射到具有UDT集合的表

时间:2018-06-14 22:34:59

标签: node.js cassandra datastax cql express-cassandra

使用最新的express-cassandra驱动程序w / Cassandra 3.11。节点9.8.0。创建了下表和UDT:

create keyspace if not exists admin
with replication = {
    'class': 'SimpleStrategy',
    'replication_factor': 1
};

use admin;

create type role_permission (
    permission_name text,
    permission_friendly_name text,
    permission_descr text,
    status_flag int
);

create table if not exists user_profile (
    user_profile_id text,
    first_name text,
    last_name text,
    email text,
    auth_token text,
    role_permissions frozen<set<role_permission>>,
    last_mod_timestamp timestamp,
    create_timestamp timestamp,
    status_flag int,
    primary key (user_profile_id)
);

使用以下对象(user_profileModel.js)进行映射:

module.exports = {
    fields: {
        user_profile_id: "text",
        first_name: "text",
        last_name: "text",
        email: "text",
        auth_token: "text",
        role_permissions: {
            type: "frozen",
            typeDef: "<set<role_permission>>"
        },
        last_mod_timestamp: "timestamp",
        create_timestamp: "timestamp",
        status_flag: "int"
    },
    key: ["user_profile_id"]
};

导致以下错误:

  

apollo.model.tablecreation.schemamismatch:给定架构不匹配   现有的DB表&#34; user_profile&#34;迁移暂停,请申请   手动更改

奇怪的是,如果我让express-cassandra生成密钥空间和表,它第一次就可以了。它就在那里。如果我重新启动应用程序,我会收到上述相同的错误。如果我删除&#34; role_permissions&#34;从表/实体收集,它工作得很好。单个UDT也可以正常工作 - 它只是那些没有UDT的集合。

0 个答案:

没有答案