【问题标题】:Connection with mongolab gives null JSON与 mongolab 的连接给出了空 JSON
【发布时间】:2016-04-08 09:23:45
【问题描述】:

这是我的 server.js。

var express          = require('express'),
    app              = express(),
    bodyParser       = require('body-parser'),
    mongoose         = require('mongoose'),
    CohortController =require('./CohortController');

var MongoURL='mongodb://username:password@ds037395.mongolab.com:37395/abc';

mongoose.connect(MongoURL,function (error) {
    if (error) 
        console.error(error);
    else
        console.log('mongo connected');
});


app.use(bodyParser());

app.get('/api/cohorts',CohortController.list);
app.post('/api/cohorts',CohortController.create);

app.listen(3000,function(){ 
  console.log('Listening...');
})

还有我的 CohortController.js

 var mongoose=require('mongoose');

 var Cohort=mongoose.model('Cohorts',new Schema({
 id:Number,
 name:String
 }));
module.exports.create=function(req,res){
var cohort=new Cohort(req.body);
cohort.save(function(err,result){
res.json(result);
 });
}

module.exports.list=
function(req,res){
  Cohort.find({},function(err,results){
   res.json(results);
 });
}

当我运行节点服务器并使用 URL 时

localhost:3000/api/cohorts

我得到的是空 JSON,即[],但是当我将它与本地 mongodb 实例连接时,我得到了正确的 JSON。

【问题讨论】:

  • 第二个参数应该是模式的实例 var Schema = mongoose.Schema; mongoose.model('Cohorts', new Schema({id:Number, name:String});
  • 上述架构你试过了吗
  • 是的@Venkatraman 我只这样做了,我编辑了错误....
  • 现在可以了吗?
  • 不...实际上这不是问题..我认为

标签: javascript node.js mongodb mlab


【解决方案1】:

尝试创建连接:

//Connect
var db = mongoose.createConnection(MongoURL);
db.on('error', console.error.bind(console, 'connection error:'));

//Once connected do actions
db.once('open', function callback () {
    console.log('Connected to DB: '+MongoURL); 
});

并添加类别 sshcema 或您想要的任何架构:

    var category = new Schema({
        name : String,
        quantity : Number
    });

    db.categories = db.model('categories', category)

【讨论】:

  • @Shubham 已修复,我添加了如何添加架构的示例
  • 表示连接到mongodb://username:password@ds037395.mongolab.com:37395/abc。但是没有获取 json ......它一直在加载和加载
  • 你需要 json 吗?一旦它显示其已连接,因为它已连接,只需添加 shcemas 并使用 db var。
【解决方案2】:

在架构中添加集合。

var schema = new Schema({
  id:Number,
  name:String
}, { collection: 'actor' });

// or

schema.set('collection', 'actor');

// or

var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName)

【讨论】:

  • 如果我将集合添加到架构中会发生什么......我的 mongolab 帐户中已经有集合
  • 当我使用 shell 访问 mongolab 帐户时......我得到了正确的输出。
猜你喜欢
  • 2015-08-19
  • 2015-10-31
  • 2016-03-16
  • 2013-10-11
  • 1970-01-01
  • 2018-08-21
  • 2015-02-28
  • 1970-01-01
  • 2015-09-04
相关资源
最近更新 更多