带有Node.js的MongoDB引用我无法填充

时间:2016-12-20 15:44:15

标签: javascript java node.js mongodb mongoose

我想在屏幕上显示用户的位置信息。

例如:

name: "Andy" surname : "Carol" City : "Istanbul"  Town : "Kadıkoy"

当我调用getuser函数时,我想显示城市和城镇名称。

这是我的代码:

UserSCHEMA



// Model for the User 
module.exports = (function userSchema() {

  var Mongoose = require('mongoose');
  var Schema = Mongoose.Schema;

  var userSchema = new Schema({

    name: {
      type: String,
      require: true
    },
    surname: {
      type: String,
      require: true
    },
    tel: {
      type: String,
      require: true
    },
    age: {
      type: String,
      require: true
    },
    mevki_id: {
      type: String,
      require: true
    },
    lok_id: [{
      type: Mongoose.Schema.Types.ObjectId,
      ref: 'locations'
    }]

  });

  var collectionName = 'users';
  var USERSCHEMA = Mongoose.Schema(userSchema);
  var User = Mongoose.model(collectionName, USERSCHEMA);

  return User;

})();




USERController

//This Controller deals with all functionalities of User
function userController() {

  var User = require('../models/UserSchema');

  // Creating New User
  this.createUser = function (req, res, next) {

    var name = req.body.name;
    var surname = req.body.surname;
    var tel = req.body.tel;
    var age = req.body.age;
    var mevki_id = req.body.mevki_id;
    var lok_id = req.body.lok_id;

    User.create({
      name: name,
      surname: surname,
      tel: tel,
      age: age,
      mevki_id: mevki_id,
      lok_id: lok_id
    }, function (err, result) {
      if (err) {
        console.log(err);
        return res.send({
          'error': err
        });
      } else {
        return res.send({
          'result': result,
          'status': 'successfully saved'
        });
      }
    });
  };

  //Populateeee

  this.getUser = function (req, res, next) {

    User.find().populate('lok_id')
      .exec(function (err, result) {
        if (err) {
          console.log(err);
          return res.send({
            'error': err
          });
        } else {
          return res.send({
            'USERS': result
          });
        }
      });
  };

  return this;

};

module.exports = new UserController();

位置架构

//Schema for Location
module.exports = (function LocationSchema() {

  var Mongoose = require('mongoose');
  var Schema = Mongoose.Schema;

  var LocationSchema = new Schema({

    userid: {
      type: Mongoose.Schema.Types.ObjectId,
      ref: 'users'
    },

    il: {
      type: String,
      require: true
    },

    ilce: {
      type: String,
      require: true
    }

  });

  var collectionName = 'locations';
  var LocationSCHEMA = Mongoose.Schema(schema);
  var Location = Mongoose.model(collectionName, LocationSCHEMA);

  return Location;
})();

位置控制器

//This Controller deals with all functionalities of Location
function locationController() {
  var location = require('../models/LocationSchema');

  // Creating New Location
  this.createLocation = function (req, res, next) {
    var userid = req.params.userid;
    var il = req.params.il;
    var ilce = req.params.ilce;

    location.create({
      userid: userid,
      il: il,
      ilce: ilce
    }, function (err, result) {
      if (err) {
        console.log(err);
        return res.send({
          'error': err
        });
      } else {
        return res.send({
          'result': result,
          'status': 'successfully saved'
        });
      }
    });
  };

  // Fetching Details of Location
  this.getLocation = function (req, res, next) {

    location.find({}, function (err, result) {
      if (err) {
        console.log(err);
        return res.send({
          'error': err
        });
      } else {
        console.log(result);
        return res.send({
          'location Details': result
        });
      }
    });
  };

  return this;

};

module.exports = new locationController();

1 个答案:

答案 0 :(得分:0)

我的模型定义已经存在问题。 通过将第三个参数添加到mongoose.model(显式集合名称)

来修复它

// Try to replace :
var collectionName = 'users';	
var USERSCHEMA=Mongoose.Schema(userSchema);
var User = Mongoose.model(collectionName, USERSCHEMA);
// with:
var collectionName = 'users';	
var USERSCHEMA=Mongoose.Schema(userSchema);
var User = Mongoose.model(collectionName, USERSCHEMA, collectionName);
collectionName必须在模式定义或模型定义中设置。有关详细信息,请参阅here