使用最新的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的集合。