node.js - 环回 hasandbelongstomany 关系表不存在

标签 node.js relationship loopbackjs

我定义了两个模型: “部分”模型:

{
  "name": "part",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {
    "assemblies": {
      "type": "hasAndBelongsToMany",
      "model": "assembly",
      "foreignKey": ""
    }
  },
  "acls": [],
  "methods": {}
}

和“装配”模型:

{
  "name": "assembly",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "title": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "parts": {
      "type": "hasAndBelongsToMany",
      "model": "part"
    }
  },
  "acls": [],
  "methods": {}
}

两个模型都有一个 hasAndBelongToMany 关系。

在/server/boot/sample-model.js 中,我创建了这两个模型的一些实例:

module.exports =  function(app){
  var Dev = app.dataSources.dev;
  var Customer = app.models.customer;
  var Order = app.models.order;
  var Part = app.models.part;
  var Assembly = app.models.assembly;

  Dev.automigrate(['customer', 'order', 'assembly', 'part'], function(err) {
    Customer.create([
      {name: 'nicolas'},
      {name: 'marie'},
      {name: 'cyril'}
    ], function(err, customers){
      Part.create([
        {name: 'boulon'},
        {name: 'ecrou'},
        {name: 'cheville'},
      ], function(err, part){
        //console.log(part[0])
        Assembly.create([
          {title: 'piece1'},
          {title: 'piece2'},
          {title: 'piece3'},
        ], function(err, assemblies){
          //console.log(assemblies[0])
          assemblies[0].parts.add(part[0], function(err){
            if(err){
              console.log(err)
            }
          })
        })
      })
    });
  });
}

但是

assemblies[0].parts.add(part[0], function(err){
                if(err){
                  console.log(err)
                }
              })

以错误结束:

{ [Error: ER_NO_SUCH_TABLE: Table 'database_development.assemblypart' doesn't exist]
  code: 'ER_NO_SUCH_TABLE',
  errno: 1146,
  sqlState: '42S02',
  index: 0 }

为什么环回不在我的数据库中创建装配部件表?

最佳答案

我曾经遇到过同样的问题,经过几个小时的努力(使用 postgres 连接器),我找到了几种解决方案。

这是最短的:

而不是:

  Dev.automigrate(['customer', 'order', 'assembly', 'part'], function(err) {
    // Your code here
  });

尝试使用这个:

  Dev.automigrate()
    .then(function(err) {
      // Your code here
    });

我不知 Prop 体原因,但在第二种情况下会创建连接表。

您可以尝试一下并告诉我它是否适合您吗?如果不是,您能否提供一些地方让我可以检查并尝试运行您的代码?

关于node.js - 环回 hasandbelongstomany 关系表不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948067/

相关文章:

javascript - 设置超时函数回调静态变量

javascript - Sequelize 通过另一个多个关联项查询所有关联项

php - laravel 5.1 模型未找到

ios - 使用 NSPrivateQueueConcurrencyType 和自定义 setter 的核心数据延迟加载不起作用

node.js - LoopBack 用户特定的数据过滤/访问

node.js - 环回中的 'cb' 是什么意思?

node.js - 如何获取 DD-MM-YYYY h :mm:ss:ssss using moment 格式的日期

javascript - React Router 拦截对 Express 服务器的 API 调用

r - 创建 ID 对组,每个组具有共同的 ID

javascript - 远程方法未显示在环回 API 资源管理器中