私がしたいのは、クエリを実行し、電子メールアドレスが既に登録されているかどうかを確認し、登録されている場合はリクエストを拒否し、そうでない場合は検証を実行してから、ユーザーテーブルにユーザーを作成することだけです。これはちょっとしたシェルです。コードはもともとhttps://github.com/vitaly-t/pg-promise-demoに基づいていました。そのコードは素晴らしいですが、私はそうではありません。約束は私にとってまったく無意味です。何をどこに返すべきなのかわかりません。
このコードは実行され、本来の目的を達成しますが、キャッチにヒットし、「未定義のプロパティ 'then' を読み取ることができません」というメッセージが返されます。最初の .then() 内にないように 2 番目の .then をチェーンしようとすると、既に送信された後に res を変更しようとしているというエラーが表示されます。
誰かがここで何が間違っているのか、それを修正する方法を理解するのを手伝ってもらえますか?
useradd: function (req, res) {
db.users.findbyemail(req.body.email)
.then(function(data){
if( typeof data === undefined || data === null) {
db.users.add({
provider: 'local',
email: req.body.email,
password: req.body.password,
salt: 'salt',
displayName: req.body.displayName })
.then(function(data){
res.json({
success: true,
data: "Account created"
})
})
} else {
res.json({
success: false,
error: "Email address " + req.body.email + " is already registered on this site"
})
}
})
.catch(function(error){
res.json({
success: false,
error: error.message || error
})
})
}