【发布时间】:2021-12-26 16:43:30
【问题描述】:
我有一个模型 Franchise,它有另一个 Schema Employee 作为其字段的子文档。结构如下。
Franchise.js
const Franchise = new mongoose.Schema(
{
franchiseName: String,
address: String,
managers: [Employee]
});
export default mongoose.model(
"Franchise",
Franchise
);
Employee.js
const Employee = new mongoose.Schema(
{
name: String,
email: String,
phoneNo: Number,
password: String,
});
导出默认员工;
我面临的问题是对 Franchise 的每个查询,它都会为 manager 字段中的对象返回一个新的 _id。有什么办法让它保持不变?
例如,我在 Franchise 上运行一个简单的 findById 并将其存储在 Franchise 变量中。 然后我 console.log(franchise.managers)。
每次运行查询时都会打印不同的 ID。
[
{
_id: new ObjectId("61925d2697852574eb0ba9ab"),
name: 'Franchise Manager 1',
email: 'franchise1@sfc.com',
phoneNo: 1234567890,
}
]
第二次运行查询:
[
{
_id: new ObjectId("61925ba8130aca93a7dd3dbc"),
name: 'Franchise Manager 1',
email: 'franchise1@sfc.com',
phoneNo: 1234567890
}
]
如您所见,员工是相同的,但每次调用都有不同的 ID。请帮忙。 谢谢。
【问题讨论】:
-
为什么不将 Employee 导出为 mongoose.model
-
@Alghazali505 这样做会导致此错误。 TypeError:无效的架构配置:
model不是数组managers中的有效类型。有关有效架构类型的列表,请参阅 mongoosejs.com/docs/guide.html#definition。 -
是的,因为您需要先在 Franchise.js 中导入 Employee 架构。
-
将 Schema 命名为“FranchiseSchema”、“EmployeeSchema”这样的好习惯
-
@Alghazali505 我正在导入另一个架构。无论如何,我解决了我的问题,谢谢。
标签: mongodb express mongoose mern