Node.js 多维数组的Mongoose模式解决方案

Node.js 多维数组的Mongoose模式解决方案,node.js,mongodb,multidimensional-array,mongoose,Node.js,Mongodb,Multidimensional Array,Mongoose,我正在编写一个web应用程序,它必须为网格保存数据。像战舰一样思考。我希望能够做到这一点: var block = mongoose.Schema({ type: Number, colour: String }); var schema = mongoose.Schema({ grid: [[block]] }); 但是,这似乎是不可能的,因为多维数组不受支持。喝倒采有人能建议一个解决这个问题的方法吗?我想要多数组格式的块,这样我就可以使用坐标来访问它们。一个可能的解决方法是使

我正在编写一个web应用程序,它必须为网格保存数据。像战舰一样思考。我希望能够做到这一点:

var block = mongoose.Schema({
  type: Number,
  colour: String
});

var schema = mongoose.Schema({
  grid: [[block]]
});

但是,这似乎是不可能的,因为多维数组不受支持。喝倒采有人能建议一个解决这个问题的方法吗?我想要多数组格式的块,这样我就可以使用坐标来访问它们。

一个可能的解决方法是使用
Schema.Types.Mixed
。假设您需要创建一个2x2数组,其中包含
block
对象(我还没有测试这段代码):

现在,假设您在这里创建了4个“块”对象(块1、块2、块3、块4),那么您可以执行以下操作:

var yourGrid = new YourGrid;

yourGrid.arr.push([block1, block2]);
// now you have to tell mongoose that the value has changed
    // because with Mixed types it's not done automatically...
    yourGrid.markModified('arr');
yourGrid.save();
然后,对接下来的两个对象执行相同的操作,
block3
block4

var yourGrid = new YourGrid;

yourGrid.arr.push([block1, block2]);
// now you have to tell mongoose that the value has changed
    // because with Mixed types it's not done automatically...
    yourGrid.markModified('arr');
yourGrid.save();