Я новичок в мире nodejs. Я подключил узел к серверу mongodb. Теперь я хочу написать свой модуль для crud-операции mongodb, но когда я позвоню, найдите его обратно unifined. Как я могу решить эту проблему? main.js
var MongoClient = require('mongodb').MongoClient;
var express = require('express');
var app = express();
var url = "mongodb://localhost:27017/movie";
var result;
var crud = require('./crud.js');
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("movie");
var test=crud.findAll(db,dbo,"test");
console.log(test);
});
var server = app.listen(8081, function () {
var host = server.address().address;
var port = server.address().port;
console.log("Listening on "+host+":"+port);
})
crud.js
exports.findAll = function(db, dbo, collection){
dbo.collection(collection).find({}).toArray(function(err,result){
if (err) throw err;
db.close();
return result;
});
}
Функция findAll
не возвращает значение, поэтому значение test
не undefined
. Вы должны иметь дело с результатом обратного вызова или выполнить реализацию на основе Promise.
module.exports = { findAll: function (db, dbo, collection) {...} }