Mongoose文档没有“保存”方法 - 但是,确实如此

时间:2014-07-31 00:05:02

标签: javascript node.js mongodb mongoose

当迭代Model.find()返回的一组文档时,我将每个结果文档传递给另一个最终调用save()方法的函数。但是我得到了这个错误:

[TypeError: Object #<Object> has no method 'save']

我已确认相关对象是Mongoose文档。事实上 - 这真让我感到困惑......

console.log(order.save); // { [Function] numAsyncPres: 0 }
order.save(); // [TypeError: Object #<Object> has no method 'save']

我甚至无法理解这种可能性,直到我称之为......

如果需要的话,我会提供更多的上下文代码,但是我的指责是,这是我所知道的一些奇怪/愚蠢的疏忽,有人会立即认出来。

编辑:在查看错误堆栈时,我发现 正在调用save。否则,我会看到完全不同的错误消息。相反,save方法无法找到内部保存方法。这是堆栈:

at C:\dev\node_modules\mongoose\lib\document.js:1272:13
at Array.forEach (native)
at model.pre.err.stack (C:\dev\node_modules\mongoose\lib\document.js:1254:12)
at model._next (C:\dev\node_modules\mongoose\node_modules\hooks\hooks.js:50:30)
at model.proto.(anonymous function) [as save] (C:\dev\node_modules\mongoose\node_modules\hooks\hooks.js:96:20)
at fixNoPriceItem (C:\dev\unimatrix\node_modules\cathy.js:202:10)
at Array.forEach (native)
at CallManager.callback (C:\dev\unimatrix\node_modules\cathy.js:181:18)
at Object.tracker.complete (C:\dev\unimatrix\node_modules\mowse\node_modules\constructors\Call-Manager.js:80:8)
at continueHandling (C:\dev\unimatrix\node_modules\mowse\node_modules\constructors\Call-Manager.js:138:14)

实际调用order.save的函数是fixNoPriceItem,第六个函数调低了。

保存前对文档的唯一更改如下:

order.items[targetIndex] = itemData; // items is an arr
order.markModified('items');

我怀疑它与我如何设置子文档有关...

0 个答案:

没有答案