我似乎不能引用2模式填充之后

I cant seem to reference 2 schemas to populate after

本文关键字:模式 填充 之后 引用 不能      更新时间:2023-09-26

这是我想引用的两个模式。我希望listingsScheme userId引用userScheme的_id。已经花了2天时间了,请帮忙。

var userScheme = new Schema({
email: { type: String },
password: { type: String },
fullName: { type: String },
coverPhoto: { type: String},
profilePhoto: { type: String},
fbUserID: { type: String},
profileExtraInfo: { type: Array},
listings: {type: Schema.Types.ObjectId, ref: "Listings"}
var listingsScheme = new Schema({
category: { type: String, index: true }, 
title: { type: String },
description: { type: String },
attributes: { type: Array },
nrViews: {type: Number },
photos: { type: Array },
location: { type: Array, index: '2d' },
created: { type: Date, index: true },
updated: { type: Date },
active: { type: Boolean, index: true } ,
userId : { type: Schema.Types.ObjectId, ref : 'User' } ,
fullName : { type: String },
profilePhoto : { type : String},
followers : {type : String},

除了语法错误,你的代码应该可以工作。

  1. 记住使用复数模型名称(你有'User'=>'users')。
  2. 不要忘记为你的模式建模。
  3. 不要忘记使用。populate('userId')方法。
  4. 不要忘记连接服务器(发生的频率比你想象的要高)
  5. 确保你真的有文件彼此连接。

测试代码:

var mongoose  = require('mongoose');
//  connect with database.
mongoose.connect('mongodb://localhost:27017/temp');
var userScheme = new mongoose.Schema({
  email: { type: String },
  password: { type: String },
  fullName: { type: String },
  coverPhoto: { type: String},
  profilePhoto: { type: String},
  fbUserID: { type: String},
  profileExtraInfo: { type: Array},
  listings: {type: mongoose.Schema.Types.ObjectId, ref: "Listings"}
});
var listingsScheme = new mongoose.Schema({
  category: { type: String, index: true }, 
  title: { type: String },
  description: { type: String },
  attributes: { type: Array },
  nrViews: {type: Number },
  photos: { type: Array },
  location: { type: Array, index: '2d' },
  created: { type: Date, index: true },
  updated: { type: Date },
  active: { type: Boolean, index: true } ,
  userId : { type: mongoose.Schema.Types.ObjectId, ref : 'User' } ,
  fullName : { type: String },
  profilePhoto : { type : String},
  followers : {type : String}
});
//  don't forget to 'model' your scheme.
var users    = mongoose.model('User', userScheme);
var listings = mongoose.model('listings', listingsScheme);
//  create mock user.
var user = new users({
  email:'test'
});
//  create mock listing with the user_id attached to property userId.
var listing = new listings({
  userId:user._id
});
//  save the created user and listing.
user.save();
listing.save();
//  find ONE document in the collection 'listings'.
//  populate the userId.
//  execute the function and let mongoose call your callback.
listings.findOne().populate('userId').exec(function(err, doc)
{
  //  ensure there are no errors.
  if(!err && doc)
  {
    //  print the doc we found.
    //  should give userdoc inside userId property.
    console.log(doc);
  }
});
//  clear collections.
//users.remove({});
//listings.remove({});

可运行链接:http://runnable.com/U24GoC9x3L9alfPc/output