[英]LoopBack Automigrate Call Order
我正在使用LoopBack自动迁移在应用程序启动期间从模型创建MySQL数据库表。 我的帐户模型与我的信用模型定义了hasAndBelongsToMany关系,反之亦然。
我正在尝试在帐户中创建贷方,但是出现SQL错误。 “错误:ER_PARSE_ERROR:您的SQL语法有错误;请在与MySQL服务器版本相对应的手册中找到在第1行的'3 ORDER BY id
LIMIT 1'附近使用的正确语法”
根据我的日志记录,似乎自动迁移没有按照我的automigrate.js文件中定义的顺序发生,并且LoopBack分配了一些任意顺序,这导致在尝试向其添加信用额时未创建“帐户”表...
环回的顺序根据我的日志记录创建了自动迁移表,它首先创建了帐户,然后是creditaccounts,然后是credit ...我需要它是Account,credits和creditaccounts。
因此,我的问题是,在使用自动迁移时,如何控制LoopBack创建数据库表的顺序? 还是我错过了什么?
我的server / boot / automigrate.js文件的压缩版本:
app.automigrate('account', function(err) {
server.models.Account.create({id:1}, function(err, record) {
//handle errors here
});
});
app.automigrate('credit', function(err) {
server.models.Credit.create({id:1}, function(err, record) {
//handle errors here
});
});
app.automigrate('creditaccount', function(err) {
server.models.Account.findById({id:1}, function(err, account) {
server.models.Credit.findById({id:1}, function(err, credit) {
account.credits.add(credit, function(err, creditaccount) {
//error handling
})
});
});
});
解决方案与自动迁移无关,SQL错误是因为我试图使用一个对象作为第一个参数而不是id的原始参数来调用Account.findById,因此应该是:
app.automigrate('account', function(err) {
server.models.Account.create({id:1}, function(err, record) {
//handle errors here
});
});
app.automigrate('credit', function(err) {
server.models.Credit.create({id:1}, function(err, record) {
//handle errors here
});
});
app.automigrate('creditaccount', function(err) {
server.models.Account.findById(1, function(err, account) {
server.models.Credit.findById(1, function(err, credit) {
account.credits.add(credit, function(err, creditaccount) {
//error handling
})
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.