У меня есть две модели:
PdfAnnotation.js:
module.exports = {
tableName: "pdf_annotations",
primaryKey: "pk_id",
attributes: {
pk_id: {
type: "number",
autoIncrement: true
},
annotation_id: {
type: "string",
unique: true,
required: true,
},
comments: {
collection: "pdfcomments",
via: "fk_annotation_id"
}
}
};
PdfComments.js:
module.exports = {
tableName: "pdf_comments",
primaryKey: "pk_id",
attributes: {
pk_id: {
type: "number",
autoIncrement: true,
},
fk_annotation_id: {
model: "pdfannotations",
},
comment_content: {
type: "string",
},
}
};
Когда я запускаю эти коды:
PdfAnnotations.create({
annotation_id: "test3",
});
PdfComments.create({
fk_annotation_id: 'test3',
comment_content: 'test',
});
Я получил эту ошибку:
Я следил за документацией: https://sailsjs.com/documentation/concepts/models-and-orm/associations/one-to-many. Разница между моей реализацией и документами заключается в следующем: ограничение, которое я использовал для PdfComments для PdfAnnotations через уникальное поле annotation_id(string) не является основным ключ pk_id(число), так что я получил ошибку.
По некоторым причинам я не хочу использовать annotation_id в качестве первичного ключа (например, его тип — строка)
Я не знаком с Sails и его ORM, надеюсь увидеть вашу помощь.
fk_annotation_id
ожидает фактический идентификатор первичного ключа из модели PdfAnnotations. Таким образом, строка, созданная во времяPdfAnnotations.create
,id
должна быть передана дляfk_annotation_id
. - person khushalbokadey   schedule 30.05.2020