我正在使用节点应用程序,我在我的数据库中创建了一个名为“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" }
答案 0 :(得分:2)
默认情况下,Mongoose会对您的模型名称进行复数化(和小写),以确定它所绑定的集合名称。因此,在这种情况下,它会使用staffs
而不是staff
。
要解决此问题,您可以使用第三个参数显式设置集合名称mongoose.model
:
var colligue = mongoose.model('staff', new mongoose.Schema({
name : String
}), 'staff');