在 Express 中发布时,对象 #<Object> 没有方法 'validate'

Object #<Object> has no method 'validate' when posting in Express

我正在尝试使用 Angular 和 Express 创建一个简单的投票应用程序。我已经完成了大部分工作,但应用程序在发布数据时崩溃了。快速控制台似乎吐出的唯一错误是:

 node_modules\mongoose\lib\schema\documentarray.js:94
        doc.validate(function (err) {
        ^

TypeError: 对象 # 没有方法 'validate'

我发送的数据示例如下所示:

    { 
question: 'string',
  responses:
   { '0': { responseText: 'asdsa' },
     '1': { responseText: 'asdasd' },
     '2': { responseText: 'sadasd' } 
    } 
}

这是我的快递 api: http://pastebin.com/HT6yp1UN

这是我的模型 http://pastebin.com/PJbaRJnX

我认为这可能与 mongoose 没有获得它期望的数据类型有关,但查看 post 请求似乎与我的模型期望的一致。我没能找到更多关于这个问题的信息,有人能给我指出正确的方向吗?

谢谢!

在您的 mongoose 架构中,您将 responses 定义为一个数组,并且您将 responses 作为对象的对象发送。

您应该在通过 POST 发送数据之前调整您的数据,以反映您的 mongoose 模式:

question: 'string',
  responses:
   [ { responseText: 'asdsa' },
     { responseText: 'asdasd' },
     { responseText: 'sadasd' } 
   ] 
}