节点数据库连接不会从服务器获取数据

时间:2013-12-30 13:30:23

标签: node.js mongodb

我正在使用节点应用程序,我在我的数据库中创建了一个名为“staff”的mongodb。当我使用并看到我的终端显示数据可用性(插入1个数据),但当我返回相同的使用节点功能时,我总是得到空数组('[]')..

这是我的节点功能:

var 
    appRoot = __dirname,
    express = require("express"),
    path = require("path"),
    mongoose = require("mongoose"),
    app = express();

    mongoose.connect('mongodb://localhost/myOffice'); //i am connecting to myOffice db

    var colligue = mongoose.model('staff', new mongoose.Schema({
        name : String
    }));


    app.configure(function(){
      app.use(express.json());
      app.use(express.urlencoded());
      app.use(app.router);
      app.use(express.static(path.join(appRoot, "public")));

    });




app.get('/', function (req, res){
    res.send("I am hearing!");
});

app.get('/staff', function(req, res) {
    res.sendfile(__dirname + '/public/static.html');
});

app.get('/api/staffs', function(req, res) {
    return colligue.find(function(err, staffs) {
        if (!err) {
            return res.send(staffs); // finding from colligue but always getting empty array '[]'
        }
    })
});

app.listen(3000);

在终端我可以查看我的数据:

  db.staff.find()
{ "_id" : ObjectId("52c16190b5832172661967ba"), "name" : "servent1" }

1 个答案:

答案 0 :(得分:2)

默认情况下,Mongoose会对您的模型名称进行复数化(和小写),以确定它所绑定的集合名称。因此,在这种情况下,它会使用staffs而不是staff

要解决此问题,您可以使用第三个参数显式设置集合名称mongoose.model

var colligue = mongoose.model('staff', new mongoose.Schema({
    name : String
}), 'staff');