将数组添加到MongoDB / Mongoose集合时出错

时间:2015-11-24 20:42:36

标签: arrays node.js mongodb knockout.js mongoose

我正在尝试将一个数组添加到Mongo文档中,并且我收到了错误"Cast to Array failed for value "[object Object],[object Object]" at path "vendors""

这是我的模特:

module.exports = {
  attributes: {
    vendors: {
      type: [String]
    },
    description: {
      type: String
    }
  }
};

以下是我要创建的代码:

var vendors = ko.observableArray(['foo','bar']);
var desc = ko.observable('yadda yadda yadda');
var dto = {
    data: {
      vendors: vendors(),
      description: description()
    }
};
DataService.quoteRequest.create(dto);

1 个答案:

答案 0 :(得分:1)

Musical Shore,

我不熟悉knockout.js,但就Mongoose而言,看起来你并没有定义SchemaModel。您需要执行以下操作:

定义架构

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var attributesSchema = new Schema({
  vendors: [String],
  description: String
});

创建模型

var Attributes = mongoose.model('Attribute',attributesSchema);

创建并保存文档

//create an attribute document
var attribute = new Attributes(
   { 
     vendors: vendorsArray,
     description: desc
    }
 );

attribute.save(function(err){
if(!err) console.log('Success');
}