Node.js - 从不同文件创建与Mongoose的关系

时间:2015-12-11 07:22:18

标签: node.js mongodb mongoose

我在不同的文件中有两个架构ProductsUsersProducts属于UserUser属于Product

问题是,我尝试使用Populate但不知何故它返回的不是我的预期。

这是我的模型 products.js

上的产品架构
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var users = require('../models/users');

var Product = mongoose.Schema({
  user_id : {type: String, required: true },
  category_id : {type: String, default: null},
  title : {type: String, required: true },
  content : {type: String, default : "" },
  pictureUrls : Array,
  counter : {type : Number, default : 0},,
  lowercaseTitle : {type: String, default : null },
  _user : { type: Schema.Types.ObjectId, ref: users.User }
});

Product.set('toObject', {
  getters: true,
  virtuals: true
});

module.exports = mongoose.model('Product', Product)

这是我在模型 users.js

上的用户架构
var mongoose = require('mongoose');

var User = mongoose.Schema({
  firstName : {type: String, default: "" },
  lastName : {type: String, default: "" },
  username : {type: String, required: true },
  email : {type: String, required: true },
  password : {type: String, default: "" },
  bio : {type: String, default: "" },
  website : {type: String, default: "" },
  phone : {type: String, default: "" },
  gender : {type: String, default: "" },
  birthDate : {type: Date, default: null },
  avatarUrl : {type: String, default: "" },
  verified : {type : Boolean, default : false}
});

User.set('toObject', {
  getters: true,
  virtuals: true
});

module.exports = mongoose.model('User', User);

目前我通过调用每个模型

来使用方法查找
User.findOne({"sessionToken" : bearerHeader}, function (err, user){
  Product.find({"user_id" : user._id}, function (err, products){
    console.log(products);
  });
});

但如果与其他型号有关,则需要时间并成为问题。 我用这个打电话给populte

 Product.findOne({}).populate('_user').exec(function(err, p){
    console.log(p);
  });

但未设置属性_user且未定义

任何帮助? 感谢

0 个答案:

没有答案