- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Error (E_UNKNOWN) :: Encountered an unexpected error
: Trying to define a collection (external_resource) which already exists.
我正在尝试为现有数据库创建模型。我没有使用 sails 。只是水线独立。我已将连接设置为安全迁移。然而,waterline 仍在尝试创建一个已存在于我预先存在的数据库中的表。如果我为 tableName 指定一个新名称,它就可以正常工作。问题似乎是当我尝试使用现有表中的现有数据,然后为其创建水线模型时。
我相信这是一个错误,因为迁移安全根本不应该尝试创建表,对吗?
我使用的是没有 sails 的水线。
水线配置如下:
```
models = [];
fs.readdirSync(HOMEDIR + '/lib/models/waterline').forEach(function(file) {
models.push(require(HOMEDIR + '/lib/models/waterline/' + file));
});
module.exports = {
init: function(next) {
models.forEach(function(model) {
orm.loadCollection(model);
});
orm.initialize(config, function(err, models) {
if (err) throw err;
global.models = models.collections;
global.connections = models.connections;
next();
});
}
};
//And this in my config
localhost: {
migrate: 'safe',
adapter: 'postgres',
database: 'intellinote',
host: 'localhost',
user: 'postgres',
password: '',
port: 5432
}
```
顺便使用 sails-postgresql。 "sails-postgresql": "^0.11.4",
我的一个假设是我的模型定义与我的 postgresql 模型不完全匹配。我尝试过这样做,但也许我错过了一些小事情。它在水线代码中的哪个位置检查 model == schema 定义?也许如果我知道这一点,我就能找到为什么要尝试创建
Sails 用户 3 年。值(value)数十亿美元的公司的主要生产级别错误:(
提前致谢
更多信息:表的 SQL 如下所示
```
DROP TABLE IF EXISTS "intellinotedb"."external_resource";
CREATE TABLE "intellinotedb"."external_resource" (
"id" int8 NOT NULL DEFAULT nextval('external_resource_id_seq'::regclass),
"external_id" varchar(2000) NOT NULL COLLATE "default",
"version_id" varchar(2000) COLLATE "default",
"url" varchar(5000) COLLATE "default",
"name" varchar(4000) COLLATE "default",
"size" int8,
"creator" varchar(50) NOT NULL COLLATE "default",
"created_at" timestamp(6) NOT NULL DEFAULT now(),
"modified_at" timestamp(6) NULL,
"project_id" int8 NOT NULL,
"note_id" int8,
"type" varchar(50) NOT NULL COLLATE "default",
"is_public" bool NOT NULL DEFAULT false,
"state" varchar(100) NOT NULL DEFAULT 'ACTIVE'::character varying COLLATE "default",
"mime_type" text COLLATE "default",
"internal_type" text COLLATE "default",
"is_template" bool NOT NULL,
"has_filled_data" bool NOT NULL
)
WITH (OIDS=FALSE);
ALTER TABLE "intellinotedb"."external_resource" OWNER TO "intellinote";
-- ----------------------------
-- Primary key structure for table external_resource
-- ----------------------------
ALTER TABLE "intellinotedb"."external_resource" ADD PRIMARY KEY ("id") NOT DEFERRABLE INITIALLY IMMEDIATE;
-- ----------------------------
-- Uniques structure for table external_resource
-- ----------------------------
ALTER TABLE "intellinotedb"."external_resource" ADD CONSTRAINT "external_resource_note_id_key" UNIQUE ("note_id") NOT DEFERRABLE INITIALLY IMMEDIATE;
-- ----------------------------
-- Foreign keys structure for table external_resource
-- ----------------------------
ALTER TABLE "intellinotedb"."external_resource" ADD CONSTRAINT "external_resource_note_id_fkey" FOREIGN KEY ("note_id") REFERENCES "intellinotedb"."note" ("id") ON UPDATE NO ACTION ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE;
ALTER TABLE "intellinotedb"."external_resource" ADD CONSTRAINT "external_resource_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "intellinotedb"."project" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;
```
还有我的模型:
```
Waterline = require('waterline');
module.exports = Waterline.Collection.extend({
tableName: 'external_resource',
meta: {
schemaName: process.env.WATERLINE_SCHEMA || 'intellinotedb'
},
connection: process.env.WATERLINE_DB || 'localhost',
attributes: {
id: {
type: 'integer',
autoIncrement: true,
primaryKey: true,
unique: true,
size: 8
},
external_id: {
type: 'string',
required: true,
size: 2000
},
version_id: {
type: 'string',
size: 2000
},
url: {
type: 'string',
required: true,
size: 5000
},
name: {
type: 'string',
required: true,
size: 4000
},
size: {
type: 'integer',
required: true,
size: 8
},
creator: {
type: 'string',
required: true,
size: 50
},
createdAt: {
type: 'datetime',
columnName: 'created_at'
},
updatedAt: {
type: 'datetime',
columnName: 'modified_at'
},
project_id: {
type: 'integer',
required: true
},
note_id: {
type: 'integer',
required: true,
size: 8
},
type: {
type: 'string',
defaultsTo: 'FILE',
required: true,
size: 50
},
is_public: {
type: 'boolean',
defaultsTo: true,
required: true
},
state: {
type: 'string',
enum: ['ACTIVE', 'DELETED'],
defaultsTo: 'ACTIVE',
required: true,
size: 100
},
mime_type: {
type: 'string',
required: true
},
internal_type: {
type: 'string',
defaultsTo: 'REGULAR',
required: true
},
is_template: {
type: 'boolean',
defaultsTo: false,
required: false
},
has_filled_data: {
type: 'boolean',
defaultsTo: false,
required: false
}
}
});
```
最佳答案
迁移功能需要位于每个模型上,而不是连接上。根据此线程:https://github.com/balderdashy/waterline/issues/1472
关于node.js - Waterline 将现有数据库迁移到无 sails 的水线模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43214030/
每当我启动 SailsJS 时,我都会收到此错误: Error: Cannot find module 'sails/node_modules/waterline/lib/waterline/quer
您好,我对 Sails 和 Nodejs 很陌生, 我使用 mysql 作为数据库。 我收到这个错误 var schemaAttributes = this.waterline.schema[this
我只是想知道是否可以使用水线选择特定字段,下面给出了orientdb查询。 e.g. select phone from user 我想使用此查询从用户顶点选择手机 userModel.find(ph
标题非常简单。我有一个如下所示的属性: isSet: { type: boolean, defaultsTo: false } 所以我的目标是在每次创建用户时将值设置为
我有一个包含 a、b、c、d 列的表格。但我只想向浏览器发送来自 a、b 的数据。我发现可以重写 toJSON() 方法,但在我看来这是 1 行结果的解决方案。如何使它适用于 json 数组? 我可以
我正在调用 REST API 来更新 sails 中的数据库条目。因此,我有一个函数,它迭代 JSON 数组并为每个条目调用另一个函数,该函数将值保存到数据库中。 function getData()
我有一个具有以下属性的模型: attributes: { title: { type: 'string' }, tags: { type:
如图stackoverflow answer由于 Waterline 不支持级联(特别是级联删除),因此可以通过使用 afterDestroy (或 afterUpdate 用于软删除)生命周期回调并
sails/waterline 是否提供了一种声明方式来强制我的模型中的数组元素为字符串类型?还是我必须编写代码来执行此验证? 最佳答案 这似乎可以通过向模型添加自定义类型来实现(在 Waterlin
在我的 nodejs 应用程序(使用 sailsjs)中,我使用 Controller 接收以 .zip 格式上传的多个图像,然后使用水线将它们保存在我的数据库中: var images = [];
我想知道是否可以在 Waterline 中定义模型或按名称获取模型,如 Node-ORM2 . 定义: var Person = db.define("person", { name
我正在尝试在表字段 (MySQL) 中插入一个由 node JS 缓冲区对象 表示的文件(在 waterline js), 当读取它并将其写入文件时,文件已损坏,我实现了一个 java 程序来更新包含
Sails 的 Waterline 允许您将实体的属性声明为“数组”类型: module.exports = { attributes: { stuff: { type: 'array'
我遇到一个问题,我的模型是使用 boolean 类型的属性定义的,但在某些时候它被解释为字符串。 例如,模型如下所示: { attributes: { id: 'string' b
Waterline ORM 是否支持继承?比如说,我有一个名为 BusinessDocument 的模型,我想创建一个名为 SalesOrder 的新模型来扩展 BusinessDocument。因此
我有一个表 user_address,它有一些字段,例如 attributes: { user_id: 'integer', address: 'string' //etc. } 目前我这样做
Token.create({ type: 'invite-into-org', email: email, initiator: organization,
Waterline 文档给出了使用 beforeCreate 的示例散列密码。除非您对密码字段进行验证并尝试更新记录,否则效果很好。这是我截取的示例: types: { hasUpperCas
我正在为模型服务提供者构建测试计划,并且我想在测试之前加载测试数据(仅使用内存适配器)(相对简单),但是有没有一种快速而肮脏的方法来截断测试后的所有集合每个测试套件都完成了吗? 提前致谢。 最佳答案
如何告诉我的 sails 模型我想要 type: 'float' 属性具有一些特定的小数位?像 decimalPlaces: 4 或类似的东西? 问题是,当我向此条目发布值时,磁盘上的值被截断为 .0
我是一名优秀的程序员,十分优秀!