javascript - TypeORM M2O O2M关系使用级联插入时外键为空

我目前正在尝试使用不使用 Typescript 的 TypeORM 创建多对一一对多 关系。

我有以下实体设置:

./entity/proposal

module.exports = {
    name: "Proposal",
    columns: {
        id: {
            primary: true,
            type: "int",
            generated: true
        },
        name: {
            type: "varchar",
            length: 60
        },
        description: {
            type: "varchar",
            default: "",
            length: 150
        },
        createdAt: {
            createDate: true
        },
        updatedAt: {
            updateDate: true
        }
    },
    relations: {
        sections: {
            target: "Section",
            type: "one-to-many",
            treeParent: true,
            cascade: true,
            inverseSide: 'Proposal'
        }
    }
}

./entity/section

module.exports = {
    name: "Section",
    columns: {
        id: {
            primary: true,
            type: "int",
            generated: true
        },
        name: {
            type: "varchar",
            length: 60,
            default: "New Section"
        },
        order: {
            type: "int"
        }
    },
    relations: {
      proposal: {
          target: "Proposal",
          type: "many-to-one",
          joinColumn: true,
          nullable: false
      }
  }
}

从这里我创建了两个函数,一个用于插入提议,另一个函数用于创建模拟数据,该模拟数据使用级联功能插入行(按照本例:https://github.com/typeorm/javascript-example)

./controller/createProposal.js

const getRepository = require('typeorm').getRepository

const createProposal = async proposal => {

    let proposalRepository = getRepository("Proposal");
    let result = await proposalRepository.save(proposal)
            .then( savedProposal  => {
                return savedProposal
            })
            .catch( err => {
                return {
                    message: "There was an issue saving the proposal",
                    err: err
                }
            });

    return result

}

module.exports = createProposal

./controller/mockData.js

const createProposal = require('../proposal/createProposal')

const insertMockData = async () => {

  let section1 = {
    name: "Letter",
    order: 1
  }

  let section2 = {
    name: "Cloud",
    order: 2
  }

  let proposal = {
    name: "Cloud Proposal",
    description: "Cloud Proposal",
    sections: [
      section1, section2
    ] 
  }

  let result = await createProposal(proposal)

}

module.exports = insertMockData

insertMockData() 函数与 nullable: true 一起使用会产生以下结果:

=== Proposal Table ===
id  name                 description
1   "Cloud Proposal"     "Cloud Proposal"
=== Section Table ===
id  name        order     proposalid
1   "Letter"    1         null
2   "Cloud"     2         null

我需要在节表中显示 proposalid 以便我可以使用 proposalRepository.findOneOrFail({ id , relations: ['sections'] }) 急切地找到它.

我做错了什么?

最佳答案

尝试将eager: true添加到Section->proposal

relations: {
    proposal: {
        target: "Proposal",
        type: "many-to-one",
        joinColumn: true,
        nullable: false,
        eager: true // This line
    }
}

https://stackoverflow.com/questions/54145980/

相关文章:

c# - 在 C# .NET Core 的断言有效负载中使用自定义数据为第 3 方应用程序创建 SA

javascript - 如何在计算属性更改时更改数据?

github - 不存在 Jira 票证时如何阻止 GitHub 拉取请求

javascript - Laravel/Vue.js项目中如何使用Vuesax上传组件?

android - 获取/返回由 Android Room 数据库生成的自动生成的 ID(作为主键)

php - symfony 4 正在创建发布请求

aws-lambda - AWS Lambda Go : The VM errors out in

c# - Selenium Firefox 不添加扩展

django - 使用 django 和 firestore,非关系数据库

python - Apache Beam python Bigquery 将流式插入更改为批量插入?