Pour des raisons d'organisation, je sépare mon code source en modules, par exemple j'ai le module user
sur mon application node.js qui est responsable de la récupération des informations utilisateur à partir d'une base de données MongoDB. Je fais quelque chose comme ceci:Rappel à MongoDB Opération avec Node.js
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);
}
}
et l'exécution sur mon script de test comme celui-ci:
var user = require("./user.js");
user.log("test", "test", function(msg) {
console.log(msg);
});
Il fait l'opération de base de données et récupère la valeur, mais chaque fois qu'il retourne seulement null
, Lorsque je n'initialise pas la variable reg_result
, elle renvoie undefined
. Que dois-je faire pour corriger cela?
Je débogué en utilisant console.log
sur le user.js
et le item
a été émis, mais je veux avoir le rappel que je peux utiliser l'élément sur d'autres sources, comme mon script de test
Merci beaucoup, cela fonctionne parfaitement! Je passe d'applications mobiles jQuery à l'aide de Phonegap à node.js, donc il est parfois difficile de s'habituer au nœud asynchrone. **:) ** –