問題: 私は、mysqlバックエンド用にノードormを使用してnodejs RESTサーバーとやりとりするAndroidアプリで作業しています。私のサーバーには、電子メールの検証に基づいてユーザーを認証する機能があります。検証が成功すると、ノードormはユーザーオブジェクトをフェッチし、検証された列の値を変更して元の値に戻します。 しかし、変更は実行後にdbに反映されません。我々は別の時間に同じコードを実行した場合にのみ、それがデータベースに反映されているmysqlバックエンド用のnode-orm2を使用したデータベース更新の問題
コード
exports.activateEmail = function(email, callback) {
log.info('In verifyEmailDao.js, activateEmail module');
var db = connectionObj.getConnection();
var Candidate = db.models.jobseeker_id;
Candidate.find({email : email}, function(err,candidate){
if(err){
log.info('cannot find account with email to activate', email);
callback(false, null);
}
else {
candidate[0].verified = true;
log.info('candidate email now activated.! status is', candidate[0].verified);
candidate[0].save(function(error){
log.info('Email verified any errors?', error);
callback(true, candidate[0].id);
});
}
});
}
編集1:
jobseeker_id.js(ノードORMモデル)
var orm = require('orm');
module.exports = function(db){
console.log('coming inside candidateId.js');
var JobSeekerId = db.define('jobseeker_id', {
id : {type:'serial' , key:true},
first_name : String,
last_name : String,
email : String,
password : String,
verified : Boolean
},{
validations : {
email : orm.enforce.unique("Already registered")
}
});
}
サーバログ:
{"name":"test-app" "msg":"In verifyEmailDao.js, activateEmail module"}
{"name":"test-app","msg":"candidate email now activated.! status is true"}
{"name":"test-app","msg":"Email verified any errors? null"}
{"name":"test-app","msg":"Email sucessfully activated. Now deleting the entry from verify email link table for candidate id 30}
{"name":"test-app","msg":"In verifyEmailDao.js, deleteRandomLink module"}
{"name":"test-app","msg":"error is---> null"}
{"name":"test-app","msg":"Entry deleted from verify email table as email is activated"}
2回目にコードを実行するとログに変更はありませんが、dbの変更が反映されます。
おそらく、db.models.jobseeker_idとログの出力を共有するでしょう。 – akaphenom
はい、モデルファイルとサーバーログ@akaphenomを追加しました – Naresh
Odd。おそらくコードをデバッグして、何が起こっているのかを見なければならないでしょう。私が覚えていることから、私はコードを愛していませんでしたが、できるだけドライバの近くで評価を開始し、スタックをバックアップします。永続性レイヤーを抽象化するModelオブジェクトとInstanceオブジェクトのどちらかがあります。問題/答えはそこで最もよくありますが、私が言ったように、「挿入」が起こっているかどうかを確認し、 – akaphenom