2016-04-15 3 views
0

問題: 私は、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の変更が反映されます。

+0

おそらく、db.models.jobseeker_idとログの出力を共有するでしょう。 – akaphenom

+0

はい、モデルファイルとサーバーログ@akaphenomを追加しました – Naresh

+0

Odd。おそらくコードをデバッグして、何が起こっているのかを見なければならないでしょう。私が覚えていることから、私はコードを愛していませんでしたが、できるだけドライバの近くで評価を開始し、スタックをバックアップします。永続性レイヤーを抽象化するModelオブジェクトとInstanceオブジェクトのどちらかがあります。問題/答えはそこで最もよくありますが、私が言ったように、「挿入」が起こっているかどうかを確認し、 – akaphenom

答えて

0

2日間の地獄の後、最終的に文db.settings.set('instance.cache', false)をdb設定ファイルに追加することで問題を解決しました。キャッシュをfalseに設定することによってdb updateの問題がどのように解決されたのかをはっきりと理解できませんでしたが、これはトリックでした!

関連する問題