我正在使用LoopBack自动迁移来在应用程序启动期间从模型创建MySQL数据库表。我的帐户模型定义了与我的信用模型的hasAndBelongsToMany关系,反之亦然。LoopBack Automigrate调用顺序
我想在帐户中创建一个贷项,但是我得到一个SQL错误。 “错误:ER_PARSE_ERROR:你的SQL语法错误;检查对应于你的MySQL服务器版本的手册,在第1行'3 ORDER BY id
LIMIT 1'附近使用正确的语法”
根据我日志记录,似乎automigrate不会按照我的automigrate.js文件中定义的顺序发生,并且某些任意顺序由LoopBack分配,这会导致在尝试向其添加信用时不会创建帐户表...
根据我的日志记录,环回创建automigrate表的顺序,它首先创建帐户,然后creditaccounts,然后信贷...我需要它是帐户,信用,然后creditaccounts。
我的问题是如何控制LoopBack在使用自动迁移时创建数据库表的顺序?或者我错过了什么?
我的服务器的/ 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
})
});
});
});
“似乎automigrate并不在我的automigrate.js文件中定义的顺序发生” ......尽管你解决了你的语法错误,并不能保证你的代码将以wri的顺序执行tten。这是可能的,但不一定是那样。 Loopback没有任何内部的任意执行顺序。您应该阅读更多关于nodejs,了解事件循环,非阻塞代码和回调的内容。如果您需要特定的执行顺序,则必须以不同的方式编写代码。 –
谢谢A.Z.我理解LoopBack和回调的异步性质,但找不到使用相关模型进行自动化的任何示例,并且文档很薄。您如何执行此操作? – Mozfet
也许这个答案可以帮助你更多的迁移http://stackoverflow.com/questions/29974947/migrating-built-in-models-to-databases/30038210#30038210 –