組織目的で私はソースコードをモジュールに分割しています。たとえば、node.jsアプリケーションにuser
というモジュールがあります。これはMongoDBデータベースからユーザー情報を取得するためのものです。Node.jsでのMongoDB操作時のコールバック
var mongo = require("mongodb"),
Server = mongo.Server,
Db = mongo.Db;
var server = new Server("localhost", 27017, { auto_reconnect: true });
var db = new Db("users", server);
module.exports = {
login: function(user, pass, callback) {
var reg_result = null;
db.open(function (err, db) {
if(!err) {
db.collection("users", function(err, collection) {
collection.findOne(
{
"username": user,
"password": pass
},
function(err, item) {
if(!err) {
reg_result = item;
} else {
reg_result = "error";
}
}
);
});
} else {
reg_result = "error";
console.log("ERROR: " + err);
}
});
callback(reg_result);
}
}
そして、このように私のテストスクリプトにそれを実行する:私はこのような何かやっていることは、データベースの操作を行い、値が、それが唯一のnull
を返すたびに取得
var user = require("./user.js");
user.log("test", "test", function(msg) {
console.log(msg);
});
を、変数reg_result
を初期化しないと、undefined
が返されます。これを修正するにはどうしたらよいですか?
は私が出力されたuser.js
とitem
にconsole.log
を使用してデバッグが、私はそう、私は
非常にありがたく、完璧に動作します! Phonegapを使って純粋なjQueryモバイルアプリからnode.jsに移行していますので、ノード上で非同期に慣れるのは少し難しいです。 **:)** –