찾다

 >  Q&A  >  본문

express - Node.js连接MongoDB后,数据无法读取

使用 Node.js + express + MongoDB 搭建RESTful API服务。

现在遇到的问题是:数据库连接成功后,无法读取集合Collection内容。

app.js

var express = require('express');
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/db/workflow');
db.connection.on("error", function (error) {
    console.log("数据库连接失败:" + error); 
});
db.connection.on("open", function () {
    console.log("------数据库连接成功!------");
});
var bodyParser = require('body-parser');
var app = express();

// uncomment after placing your favicon in /public
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(require('node-compass')({mode: 'expanded'}));
app.use(express.static(path.join(__dirname, 'public')));

require('./models/group_model');
require('./routes/group')(app);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

models/group_model.js

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;
var groupSchema = new Schema({
    name:'string'
});

module.exports = mongoose.model("group",groupSchema);

routes/group.js

var express = require('express');
module.exports = function (app) {
  var group = require('../controllers/group_controller');
  app.get('/group/get',group.getGroup);
};

controllers/group_controller.js

var mongoose = require('mongoose');
var group = mongoose.model('group');
exports.getGroup = function (req, res) {
    group.find({}).exec(function (err, data) {
        if(!data){
            res.json({code: 404, msg: "Empty"});
        }else{
            res.json({code: 0, msg: "success", data: data, count: data.length});
        }
    });
};

访问 http://localhost:3000/group/get 返回结果:

{
    code: 0,
    msg: "success",
    data: [ ],
    count: 0
}

正常的结果应该是:data中存在数据。

请各路高手赐教...

巴扎黑巴扎黑2873일 전401

모든 응답(1)나는 대답할 것이다

  • 黄舟

    黄舟2017-04-17 15:19:55

    1. 라이브러리의 컬렉션(그룹이어야 함)에 실제로 데이터가 있는지 확인하고 mongo를 연결하여 살펴보세요

    2. mongo 링크 URL을 정말 이해하지 못합니다 mongodb://localhost/db/workflow 이 링크 db/workflow의 의미도 알고 싶습니다. ? ? ? 라이브러리 이름에 /가 포함되어 있나요? 라이브러리 이름이 워크플로인 경우 mongodb://localhost/workflow가 되어서는 안 됩니다. 제가 틀렸다면 지적해주세요.

    3. 여기서 테스트 데이터를 얻을 수 있습니다. 처음에는 비어 있었습니다. 제 로컬 mongo 라이브러리에도 데이터가 없습니다. 수동으로 몇 가지 데이터를 삽입하고 mongo 링크를 수정했습니다. 기본 테스트 라이브러리는 그룹 컬렉션의 데이터를 확인한 후 꺼낼 수 있습니다.

    회신하다
    0
  • 취소회신하다