1
我有一个Loopback应用程序,我已经创建了一些种子脚本来预先填充数据库。代码在生产和本地中的行为有所不同
这里是种子
const remote = {
"name": "remote",
"email": "[email protected]",
"password": "arglebargle"
}
app.models.AppUser.find({where: {email: '[email protected]'}})
.then(res => {
if (res.length === 0) {
createUsers(remote, 'remote')
} else {
console.log('remote user already exists')
}
})
这需要调用createUsers,低于
const app = require('../server')
const Promise = require('bluebird');
module.exports = {
createUsers: (userInfo, roleName) => {
if (!userInfo || !roleName) {
let err = new Error('please give valid user and role names')
console.log(err)
return err
}
console.log(userInfo)
return app.models.AppUser.findOrCreate({where: {'name': userInfo.name}}, userInfo)
.then((instance) => {
return app.models.Role.findOne({where: {name: roleName}})
.then((role) => {
return role.principals.create({
principalType: app.models.RoleMapping.USER,
principalId: instance[0].id //find or create returns an array
})
})
})
.catch((error) => {
return error
})
}
}
上面可能不是很好的基础诺言代码。但是在其他情况下这种方式工作正常,所以我不确定我是否可以指责它。
运行上面的脚本会创建'remote'用户,并在本地为其指定'remote'角色,但它在生产中不会执行任何操作,我只是无法弄清楚原因。
的另一个区别我能想到的生产和地方之间的是,我从不同的地点打电话给他们(项目的根是不同的)
非常棒的积分。也不知道我可以使用Promise.reject(错误),这是一个伟大的指针。将纳入您的建议,并看看这是否符合预期的生产。 –
感谢您的帮助。问题原来是不同的。我需要在mysql表上运行迁移。他们在本地和远程存在差异。但是回环本身无声地吞咽着错误。这很糟糕。将尝试并在那里提出错误报告。 –