2017-08-10 9 views
0

mongo、node、およびredisサーバを設定しようとしていますが、古いデータをロードしているようなRedisキャッシュ以外はすべて正常に動作しています。node.js |古いデータをロードするRedisキャッシュ

純粋なMongoを使用すると適切なデータが返されます。私が再度submitをクリックすると、以前の投稿のデータがロードされるため、キャッシュとMongoは正常に更新されています。

これは...

updateUserById: (newUser, redis, id, callback) => { 
    User.findByIdAndUpdate(id, { 
     $set: { 
      "firstName": newUser.firstName, 
      "lastName": newUser.lastName, 
      "email": newUser.email 
     } 
    }, (err, doc) => { 
     if (err) { throw new Error(err); } 
     else if (!doc) { callback('No user with that ID to update cache.') } 
     else { 
      redis.set(id, JSON.stringify(doc), (err) => { 
       console.log('Caching updated user ' + id); 
       if (err) { callback(err); throw new Error(err); } 
       else { 
        const result = { 
         "success": "true", 
         "message": "User updated successfully" 
        }; 

        callback(result); 
       } 
      }) 
     } 
    }); 
} 

モンゴやRedisのを使用してユーザーを更新するため、私が持っている現在のコードであり、これはユーザー情報を返すためのRedisとモンゴです...

userById: async (redis, id, callback) => { 
    redis.get(id, async (err, reply) => { 
     if (err) { 
      callback(null); throw new Error(err); 
     } else if (reply) { 
      callback(JSON.parse(reply)); 
     } else { 
      await User.findById(id, (err, doc) => { 
       if (err || !doc) { callback(null); throw new Error(err); } 
       else { 
        redis.set(id, JSON.stringify(doc),() => { 
         callback(doc); 
        }) 
       } 
      }) 
     } 
    }) 
} 

私はそれが古い情報が含まれているdocと関係があることを発見しました。updateUserById

答えて

0

問題はアップデート方法の中にありました。

ドキュメントが渡されたとき、新しいデータではなく古いデータが渡されていました。これに対抗するために、メソッドに渡されたnewUserを使用しました。

updateUserById: (newUser, redis, id, callback) => { 
    User.findByIdAndUpdate(id, newUser, (err) => { 

     if (err) { throw new Error(err); } 
     else { 
      redis.set(id, JSON.stringify(newUser), (err) => { 
       console.log('Caching updated user ' + id); 
       if (err) { callback(err); throw new Error(err); } 
       else { 
        const result = { 
         "success": "true", 
         "message": "User updated successfully" 
        }; 

        callback(result); 
       } 
      }) 
     } 
    }); 
} 
:ここ

が更新されたコードです

関連する問題