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表上運行遷移。他們在本地和遠程存在差異。但是迴環本身無聲地吞嚥着錯誤。這很糟糕。將嘗試並在那裏提出錯誤報告。 –