【问题标题】:Mongoose showing null object though collection exists in MongoDB尽管 MongoDB 中存在集合,但 Mongoose 显示空对象
【发布时间】:2018-08-01 18:59:11
【问题描述】:

我尝试在我的 ExpressJS 应用程序中使用 mongoose 从本地 mongodb 获取数据。 但无法获取数据。

我尝试使用 mongoose 和 mongojs 从 mongodb 检索数据。

甚至尝试在架构中传递正确的集合名称。

这是我的代码。

使用 monogjs(blog.js)

var mongojs = require('mongojs');


      var db = mongojs('mongodb://localhost:27017/mydb', ['blogs']);

    // On Connection
    db.on('connect', function () {
    console.log('Mongo JS database connected')
    });
    //On Error
    db.on('error', function (err) {
    console.log('Mongo JS database error', err)
    });

    module.exports.getBlogs = function(res) {
    //var data = db.blogs.find();
    db.blogs.find({}, (rec, res)=>{
    if(rec){
      res.json(rec);
      console.log('Data '+ rec)
    }else{
      console.log('No Data '+ rec)
    }
    });
    }

使用猫鼬(blogs.js)

----------------------
    const mongoose = require('mongoose');
    const config = require('../config/database');
    const DataSchema = mongoose.Schema ({
            "title": { type: String },
        "Description": { type: String },
        "Rate": { type: Number }
     }, { collection : 'Datas' });

    const Datas = module.exports = mongoose.model('Datas', DataSchema);
    //const Datas = module.exports = mongoose.model('Datas', DataSchema, 
    'Datas');

    module.exports.getblogs = function(){
    Data.find({}, (recs)=>{
        if(recs){
            console.log('Records found' + recs)
        }else{
            console.log('Records not found');
        }
    }); 

【问题讨论】:

  • 请提供更多详细的连接和一些示例代码。
  • module.exports = { // 用你的用户名、密码和mlab数据库信息配置下面的代码 //database: 'mongodb://:@ds12226.mlab.com :12226/meanauthapp', //prod 数据库: 'mongodb://localhost:27017/meanauth', //dev secret: 'yoursecret' }

标签: node.js mongodb express mongoose


【解决方案1】:

尝试给出下面的代码可能是它的工作

在 Mongodb 集合中插入一条记录

const {MongoClient, ObjectID} = require('mongodb');//destructre the MongoClient object

var obj = new ObjectID();
console.log(obj);
const url  = "mongodb://localhost:27017/";
 var user ={name:'Prashant',Age:22};
 var {name}=user ; //destructre the user object
 console.log(name);
 MongoClient.connect(url,function(err,db){
   if(err) throw err;
   var dbo=db.db("TodoApp");
   var myobj ={
     name:"Prashant",
     address:"kanpur",
     Age:22,
     Work:"Accord"
   };
   dbo.collection("user").insertOne(myobj,function(err,res){
     if(err) throw err;
     console.log(res.ops[0]._id.getTimestamp());
     db.close();
   });
 });

从 Mongodb 集合中获取一条记录。

const {mongoose}= require('./../server/db/mongoose');
const {Todo} = require('./../server/models/todo');
const {ObjectID} = require('mongodb');
const {User}    = require('./../server/models/user');
var id= '5b13960c4730b43f80cef6af';

if(!ObjectID.isValid(id)){
  console.log('Id not valid');
};

Todo.find({
  _id: id
}).then((todos)=>{
  console.log('Tdod',todos);
});

Todo.findOne({
  _id: id
}).then((todo)=>{
  console.log('Todo',todo);
});

【讨论】:

    【解决方案2】:

    注意:请确认 mongodb 正确配置安装并在您的本地机器上运行

    示例:

    database.js //数据库连接

    const mongoose = require('mongoose');
    const logger = require('../helper/logger');
    
    mongoose.Promise = global.Promise;
    mongoose.connect('mongodb://localhost:27017/localDb');
    mongoose.connection.on('error', (err) => {
      logger.error(err);
    });
    

    userModel.js //模型文件

    const mongoose = require('mongoose');
    
    const { Schema } = mongoose;
    
    const userSchema = new Schema({
    
      firstName: {
        type: String,
      },
      lastName: {
        type: String,
      },
      profilePic: { type: String },
    }, { collection: 'users', timestamps: true });
    const User = mongoose.model('users', userSchema);
    module.exports = User; 
    

    server.js // 创建服务器

    const app = require('express')();
    
    require('./config/database.js'); //connection file
    
    
    // Body Parse
    const bodyParser = require('body-parser');
    
    app.use(bodyParser.json({ limit: '50mb' }));
    app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
    
    
    const server = http.createServer(app);
    
    server.listen(process.env.PORT, () => {
      logger.info(`Express server listening on port ${process.env.PORT}`);
    });
    

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 1970-01-01
      • 2016-12-26
      • 2017-12-29
      • 2019-04-26
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多