我将NestJs与TypeORM和MongoDB一起使用。我有一个项目
实体,它可能有一个后续项目。我目前的实体设计是
@Entity()
export class Project extends BaseEntity {
@ObjectIdColumn()
public id: ObjectID;
@ObjectIdColumn({ nullable: true, generated: false }) // set value manually
@OneToOne(() => Project, project => project.id) // key has to exist if not null?
public successorId?: ObjectID;
}
当我想保留数据类型时,successorId
似乎必须是一个ObjectIdColumn
。但是我想禁用自动生成,因为我想手动分配后续项目。因此,在我的存储库中,我通过
@EntityRepository(Project)
export class ProjectsRepository extends Repository<Project> {
public createProject(successorId?: ObjectID): Promise<Project> {
const project: Project = new Project();
project.successorId = successorId;
return project.save();
}
}
问题是,当我将undefined
分配给successorId
时,MongoDB将id
的相同值分配给successorId
。因此json响应将是
{
"id": "5e4f98671ad7ed2914fa596e",
"successorId": "5e4f98671ad7ed2914fa596e"
}
我如何纠正这种行为?我不确定是否需要OneToOne
关系,但我想提供一个验证,以便只能将现有ID分配为后续ID,我希望在传入不存在的随机ID时出现错误。
问题就出在这里
@OneToOne(() => Project, project => project.id)
我认为您误解了OneToOne的选项。您正在向它提供相关实体的PK
列(您的第二个参数),而它用于定义可以引用关系另一侧的属性。试着完全去掉第二个选项,留下它
@OneToOne(() => Project)
让我们知道!
我正在做一个基于GUI(swing)的Java小项目,我想禁用一些按钮。我用了我有: 但我只想把按钮的文本变成灰色,并使按钮本身的颜色和外观保持一致。我该怎么做?
问题内容: 有人知道如何从1开始生成,以便下一个对象具有2,依此类推吗? 我尝试了以下方法,但不起作用: 问题答案: 您需要一个 静态的 类成员来跟踪上次使用的索引。确保还实现一个复制构造函数: 更新: 正如@JordanWhite建议的那样,您可能希望使static计数器成为 atomic ,这意味着可以安全地同时使用(即一次在多个线程中使用)。为此,将类型更改为: 增量读取和复位操作变为:
问题内容: 我想向用户显示一些文本。我要发送的字符串变量包含多个换行符,并且我不想显示。所以我做了: bar.html: 但是启用了自动转义,我看到的是。同样,我的方法也不安全,我希望除文本外的每个标记都被转义。我看了flask.Markup模块,但是它们也不起作用。 正确的方法是什么? 问题答案: 您可以采用两种合理的方法。 解决方案1 当您将不安全的输入和HTML组合到一个变量中时,实际上是一
问题内容: 我在Employee类中有以下定义 现在,我想使用现有员工ID导入现有员工。即使在保存之前设置了员工ID,也会忽略分配的ID,并存储自动递增的ID。我们如何覆盖呢? 问题答案: 我编写了自己的生成器来解决此问题。 并像这样使用它:(替换包名)
数据访问对象: 有没有可能在上述方法本身中完成插入后返回用户的id,而不需要编写单独的select查询?
当我在NetBeans 8.2中输入时,无论是HTML段落还是类似于输入字段的内容,这个恼人的自动建议功能都会不断出现。当我试图按enter键开始一个新行时,这真的很烦人,因为当我按enter键时,它会插入大量代码,因为“按钮”会自动高亮显示。 我在下面附上了问题的截图。。。 如何禁用此自动更正功能。我不想为PHP禁用autoorrect,也不想在实际设置HTML标记时禁用autoorrect(所