search

Home  >  Q&A  >  body text

mongodb - node.js + express + mongo的编写模式疑问

最近在学习node.js, 顺便想使用node.js+express+mongo弄一个系统, 用来学习前端的知识. 在选用数据库时候使用mongo. 于是我编写了一下如下代码:

/*
 * 学生管理功能模块
 * 文档参考: doc/dbtables/student.md
 * 支持的操作为: 新增, 编辑, 修改, 批量删除
 */
var express = require('express');
var router = express.Router();
var init = function(callback) {
    var MongoClient = require('mongodb').MongoClient;
    var url = 'mongodb://localhost:27017/test_system';
    MongoClient.connect(url, function (err, db) {
        assert.equal(null, err);
        console.log("Connected successfully to server");
        var collection = db.collection('students');
        callback(collection);
    });
};
var cal = function(collection) {
    router.get('/', function(req, res, next) {
        collection.find({}).toArray(function(err, students) {
            if (!err) {
                console.log(students);
                res.render('students', {students: students});
            }
        });
    });
};

init(cal);
  1. 不太熟悉node.js + express的开发模式, 我这里使用数据库查询时候, 必须先连接成功数据库, 然后使用回调调用正常的POST/GET的方法. 这样很不是灵活.

  2. 有没有更好的解决方法, 例如数据库的访问不是异步式的.

问题:

  1. node.js + express + mongo中, 在实际项目中使用它们的人, 能否大概讲述下如何进行模块的编写?

黄舟黄舟2782 days ago579

reply all(1)I'll reply

  • 巴扎黑

    巴扎黑2017-04-17 14:59:43

    A good solution is to write the database operation function as a REST interface using back-end Java or PHP, such as https://api.myapp.com/v1.0/class/student_id, and then call this interface directly in Node.

    reply
    0
  • Cancelreply