我有以下代码:
//creates matrix and converts it to JSON file
var map = JSON.stringify(math.randomInt([10, 10],2));
//create instance of Map
const temp= new Map({_id: 2, map: map});
temp.save(function (err) {
if (err) return handleError(err);
});
这将创建一个矩阵,并使用以下模型将其放入我的 mongoDB 中的 Map 集合中:
const mapSchema = new mongoose.Schema({
_id: Number,
map: Array
})
const Map = mongoose.model('Map', mapSchema)
这很好用。但我想把整个第一个片段放到一个函数中,这样我就可以把它放在另一个文件中,将它导入到我的 index.js 中,然后运行这个函数。所以我在它周围放了一个函数,就像这样:
const generateMap = function() {
var map = JSON.stringify(math.randomInt([10, 10],2));
const temp = new Map({_id: 2, map: map});
temp.save(function (err) {
if (err) return handleError(err);
});
};
我将该函数导出到我的 index.js 文件并在那里运行该函数,但出现错误:
const temp= new Map({_id: 2, map: map});
^
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
有人可以帮我吗?
非常感谢
答案 0 :(得分:0)
在出现错误的情况下,您无意中使用了 JavaScript 的标准 Map
构造函数,而不是您自己的 Map
构造函数。如果您将参数传递给 JavaScript 的 Map
构造函数,则该参数必须是可迭代的。
因此,解决方法是确保您的构造函数是您使用它的范围内的那个。
我强烈建议不要命名事物,以免它们与 JavaScript 标准库中的事物发生冲突。也许可以考虑调用您的构造函数 XYZMap
,其中 XYZ
是标识它在您的架构中的含义的东西。这样你就不会有名称冲突,当你没有它在范围内时,你会得到一个更明显的错误。 (错误将是 ReferenceError: XYZMap is not defined
,希望能更清楚地说明发生了什么。)