node.js - Mongoose 模式中的多维数组

标签 node.js mongoose multidimensional-array

如何在 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/

相关文章:

node.js - 使用express + webpack中间件时如何在.ejs更改时自动刷新浏览器?

javascript - 启动 Node 服务器,每天在特定时间加载页面

node.js - 使用 Mongoose 和 Node.js 删除 MongoDB 中一对多和多对多关系中的引用

node.js - 通过任意排序来替代跳过和限制 Mongoose 分页

Python:访问与循环数组的当前位置相匹配的移动窗口数组的索引

javascript - 如何在 Javascript 中对二维数组进行子集化?

node.js - 在 Node 10 中使用 ifxnjs 混淆安装错误

node.js - Sails.js - 对于 REST api 使用登录名而不是 ID

node.js - 如何在 Mongoose 中创建迁移?

javascript - 在 JavaScript 中组合两个多维数组中的元素