为什么res.json
用空数组响应?
我想从馆藏分销商那里获取所有数据,因此我有
创建模型文件,然后将其分配给变量Distributordata
服务器文件:app.js
var express=require('express');
var app=express();
var bodyParser=require('body-parser');
var mongoose=require('mongoose');
var Distributordata=require('./distributor.model');
var db='mongodb://localhost/Distributordata';
mongoose.connect(db);
var port=8080;
app.get('/',function(req,res){
res.send("happy to be here");
});
app.get('/distributor',function(req,res){
// res.send("hi from distributors")
console.log("getting all distributors");
Distributordata.find(function(err,distributordata){
if(err){
res.send("error has occured");
}
else{
console.log(distributordata);
res.send(distributordata);
}
});
});
app.listen(port,function(){
console.log('app listening on port'+port);
});
模型文件:distributor.model.js
var mongoose=require('mongoose');
var Schema = mongoose.Schema;
var DistributorSchema=new Schema({
dname:String,
daddress: String
});
module.exports=mongoose.model('Distributordata',DistributorSchema);
输出
在cmd上:
app listening on port8080
getting all distributors
[ ]
答案 0 :(得分:0)
到目前为止,我已经理解您的问题是您正在mongodb中以集合名称distributor
自己创建集合。另外,由于您没有发送任何后期请求,因此您的代码也不会在主数据库中自动创建任何集合。
但是,默认情况下,猫鼬总是通过使模型名称复数来创建集合名称,在您的情况下,该集合名称为 distributordatas
。但是,当您尝试从数据库中获取数据时,它正以 distributor
的形式获得集合名称,因此,它无法建立连接。但是您可以根据需要使用 force 命名约定来进行收集。
在您的 distributor.model.js 文件中,将以下代码行更改为此代码:
module.exports = mongoose.model('Distributordata', DistributorSchema, 'distributor');
希望它能解决您的问题。有关更多参考,请查看https://mongoosejs.com/docs/guide.html#collection