ODMとしてmongooseでexpress.jsを使用しています。
他のサービスが mongoDB を更新すると、mongoose はこれを認識しないことを知っています。そのため、データベースの古い状態が引き続き表示されます。
これは、mongoose がコールバックを使用して新しいドキュメントを作成、更新した後に更新されるためだと思いますが、このコールバックは別のサービスが mongoDB と対話するときに起動されません。
では、自分で作成したドキュメントではなく、マングースが世話をするように手動で言うにはどうすればよいでしょうか?
ルート/user.js
var User = require('../models/user.js')
, requirements = { enabled: true, expired: false, locked: false };
exports.list = function(req, res){
User.find(requirements, function(err, users){
res.send(users);
});
};
app.js
app.get('/users', user.list);
curl またはブラウザを使用して /users にアクセスすると、mongodb 内のすべてのユーザーの配列が取得されます。それは今まで通りです。次に、PHP 環境で新しいユーザーを登録します。/users を再度リクエストすると、php で作成されたユーザーなしで以前と同じ配列を取得できます!
ノードサービスを再起動して/usersを再度リクエストすると、phpによって作成されたユーザーがそこにいます....