环回自动更新未创建自定义模型

时间:2018-12-19 18:36:53

标签: mysql node.js loopbackjs

我正在尝试使用Loopback(V3)创建应用程序,但遇到了奇怪的错误。

我正在尝试使用autoupdate()创建Mysql表,但是对于我的自定义模型却不起作用。

这是我到目前为止尝试过的->

var server = require('../server');
var ds = server.dataSources.db;

var models = ['test','Post','User', 'AccessToken', 'ACL', 'RoleMapping', 'Role'];

ds.isActual(models, function(err, actual) {
  if (!actual) {
    ds.autoupdate(null, function(err,result){
      console.log("DONE!");
      console.log(result);
    });
  };
});

该脚本有效。如果数据库为空,它将为所有testPost除外创建表。这些是我的自定义模型,其他则内置在环回中。

是因为型号类型吗? (尝试过的模型和PersistedModel)还是其他?我什至没有进行isActual检查,还是一无所获。

1 个答案:

答案 0 :(得分:1)

我建议您为内置模型和自定义模型保留两个单独的数组,并按如下所示编写代码,这样您就可以知道问题出在哪里。另外,我认为您的ds.autoupdate附近的代码有错误(空,有趣..... 请按照以下代码进行操作

var builtInModels = ['AccessToken', 'ACL', 'RoleMapping','Role'];
var userDefinedModels = ['Post','test'];
// migrate built-in models
dataSource.isActual(builtInModels, function (err, actual) {
  if (!actual) {
    dataSource.autoupdate(builtInModels, function (err, result) {
      if(err) console.log(err);
      console.log('Datasource Synced: Built in models');
    });
  }
});

// migrate userdefined models
dataSource.isActual(userDefinedModels, function (err, actual) {
  if (!actual) {
    dataSource.autoupdate(userDefinedModels, function (err, result) {
      if (err) console.log(err);
      console.log('Datasource Synced: User defined models');
    });
  }
});