在 Mongoose Schema 中使用 _id 作为属性类型时出错
Posted
技术标签:
【中文标题】在 Mongoose Schema 中使用 _id 作为属性类型时出错【英文标题】:Error when using _id as a property type in a Mongoose Schema 【发布时间】:2020-05-20 11:45:46 【问题描述】:我现在正在学习 MongoDB 和 mongoose。我在猫鼬中有一个存档和一个用户模式:
存档.js
var mongoose = require('mongoose');
var User = require('../users/user');
var notesSchema = new mongoose.Schema(
author: User.userId,
text: String,
files:[String]
);
var archiveSchema = new mongoose.Schema(
name: String,
priority: String,
deadline: Date,
status: String,
assigned_memnbers: [User.userId],
notes: [notesSchema],
);
archiveSchema.virtual('archiveId').get(function()
return this._id;
);
module.exports = mongoose.model('Archive', archiveSchema);
user.js:
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema(
username: String,
mail: String,
bio: String,
password: String
);
userSchema.virtual('userId').get(function()
return this._id;
);
module.exports = mongoose.model('User', userSchema);
当我运行我的服务器时,我得到了错误
TypeError: Invalid value for schema path `author`, got value "undefined"
问题来自author: User.userId
,但是我不知道如何在两个表之间进行引用。
作为参考,这是我完整的数据库设计或多或少的样子:
欢迎任何有关如何解决此问题或改进整体设计的意见。谢谢你。
【问题讨论】:
【参考方案1】:我认为您所说的是对其他集合的引用:
author: type: Schema.Types.ObjectId, ref: 'User'
和
assigned_members: [ type: Schema.Types.ObjectId, ref: 'User' ]
应该可以正常工作。
来源:Mongoose population
【讨论】:
【参考方案2】:我遇到了同样的问题。我导入了一个模块,只是没有从另一个模块导出。所以我添加了:
exports.genreSchema = genreSchema;
【讨论】:
以上是关于在 Mongoose Schema 中使用 _id 作为属性类型时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 Mongoose 在投影中包含 Mongodb“_id”字段
使用 Mongoose 在投影中包含 Mongodb“_id”字段