如何在 Mongoose 模式中定义多维数组?我想在我的 Mongoose 模式中有一个二维数组,以便在酒店中找到像这样的房间。
var Room = new Schema({
number: Number,
type: String, // Room type id
});
var Hotel = new Schema({
...
rooms: [[Room]]
});
这是我收到的错误...
D:\projects\HotelBox\node_modules\mongoose\lib\schema\array.js:58
this.caster = new caster(null, castOptions);
^
TypeError: object is not a function
at new SchemaArray
我可以通过将 rooms
定义为 Schema.Types.Mixed
来修复此问题,但随后我无法在创建时验证房间数据。
最佳答案
据我所知,目前 mongoose 中不支持多维数组的使用。
话虽这么说,正如您所指出的,您可以通过使用 Schema.Types.Mixed SchemaType 来解决此问题,但是您将失去使用 native Mongoose 类型的所有好处.但是,您可以通过使用 custom validators 定义自己的验证
来克服这个问题。 ,正如官方文档所指出的(它们非常易于使用)。自定义验证的唯一警告是它们仅在保存实例时才会触发。
如果您需要的是触发验证和初始化时间,您可以使用更底层的 middleware hooks这为您提供了细粒度的控制,因为您可以通过以下操作调用它们:
初始化
验证
保存
删除
(注意 init
Hook )
希望这可以帮助您克服您的用例。
关于node.js - Mongoose 模式中的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22223345/