如何使用数据库(mongodb)使我的代码更简单?
How to make my code simpler with database(mongodb)?
我通常使用 java.
我很困惑,我以前用 node.js.
编码
环境:快递+猫鼬
当我尝试使用数据库中的数据时,
我通常用dao-pattern编写我的代码。
如果我想从数据库中的每个 table 调用两个变量,
ex)
String title = user_dao.getData("title");
String code = book_dao.getData("code");
但是我知道节点不能这样使用它。
当我调用上面的两个变量时:
database.UserDaoModel.get(options, function(err, results) {
var title = results._doc.title;
database.BookDaoModel.get(options, function(err, book_results) {
var code = book_results._doc.code;
如您所见,我必须为 BookDaoModel 定义新行...才能获取代码 value.I 认为这确实效率低下。上面的示例只是引入了两个数据,但您知道我们需要在 5 或 6 种方法上添加更多功能吗?
- 用户验证
- 设备验证
- 等...
有什么方法可以在节点中使用我在 Java 中使用的 dao 模式?
我不想使用每一个回调来一步步获取数据。
如果我尝试从三个 table 中获取三个数据中的每一个,我必须使用三个回调。
我想一行完成。
您需要用 promise 包装您的函数,例如:
function get(db,model,options){
return new Promise((res,rej) => {
db[model].get(options,(err,val) => {
if (err) rej(err);
res(val);
}
});
}
然后:
async function run(){
const results = await Promise.all([
get(database,"UserDaoModel",options),
get(database,"BookDaoModel",options)
]);
const title = results[0]._doc.title,
code = results[1]._doc.code;
}
您可以在 Promise.all() 中添加任意数量的获取,并在结果数组中访问它们。 (忘了说了,不过当然要调用运行()函数)
我通常使用 java.
我很困惑,我以前用 node.js.
编码
环境:快递+猫鼬
当我尝试使用数据库中的数据时, 我通常用dao-pattern编写我的代码。
如果我想从数据库中的每个 table 调用两个变量,
ex)
String title = user_dao.getData("title");
String code = book_dao.getData("code");
但是我知道节点不能这样使用它。 当我调用上面的两个变量时:
database.UserDaoModel.get(options, function(err, results) {
var title = results._doc.title;
database.BookDaoModel.get(options, function(err, book_results) {
var code = book_results._doc.code;
如您所见,我必须为 BookDaoModel 定义新行...才能获取代码 value.I 认为这确实效率低下。上面的示例只是引入了两个数据,但您知道我们需要在 5 或 6 种方法上添加更多功能吗?
- 用户验证
- 设备验证
- 等...
有什么方法可以在节点中使用我在 Java 中使用的 dao 模式?
我不想使用每一个回调来一步步获取数据。 如果我尝试从三个 table 中获取三个数据中的每一个,我必须使用三个回调。
我想一行完成。
您需要用 promise 包装您的函数,例如:
function get(db,model,options){
return new Promise((res,rej) => {
db[model].get(options,(err,val) => {
if (err) rej(err);
res(val);
}
});
}
然后:
async function run(){
const results = await Promise.all([
get(database,"UserDaoModel",options),
get(database,"BookDaoModel",options)
]);
const title = results[0]._doc.title,
code = results[1]._doc.code;
}
您可以在 Promise.all() 中添加任意数量的获取,并在结果数组中访问它们。 (忘了说了,不过当然要调用运行()函数)