私はループバックアプリケーションを使用して、シードスクリプトを作成してデータベースにあらかじめ入力しています。ここでプロダクションとローカルで動作が異なるコード
シード
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')
}
})
ですこれはおそらく良い約束ベースのコードではありません
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
})
}
}
以上下回っているcreateUsersを呼び出します。しかし、これは他の状況でうまくいきますので、私がそれを責めることができるかどうかはわかりません。
上記のスクリプトを実行すると、「リモート」ユーザーが作成され、ローカルに「リモート」ロールが割り当てられますが、プロダクションでは何も行われません。理由を特定できません。私は、生産と地元の間であると考えることができ
他の唯一の違いは、私が(プロジェクトルートが異なる)
優れた点。また、大きなポインタであるPromise.reject(エラー)を使用できるかどうかはわかりませんでした。あなたの提案を組み込み、プロダクションで期待どおりに動作するかどうかを確認します。 –
ご協力いただきありがとうございます。問題は異なっていることが判明した。私はmysqlテーブルで移行を実行する必要がありました。ローカルとローカルの違いがありました。しかし、ループバックはそれ自体、エラーを静かに飲み込んでいました。それはかなり悪いです。そこにバグレポートを作成しようとします。 –