0

問題: 私は、mysql バックエンドのノード orm を使用して nodejs REST サーバーと対話する Android アプリに取り組んでいます。私のサーバーには、メール検証に基づいてユーザーを認証する機能があります。検証が成功すると、ノード orm はユーザー オブジェクトを取得し、検証済みの列の値を変更して、元に戻します。しかし、実行後に変更がデータベースに反映されていません。同じコードをもう一度実行した場合にのみ、データベースに反映されます

コード

    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 (node-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 回目に実行すると、ログに変更はありませんが、データベースの変更が反映されます。

4

1 に答える 1