Mongoose不强制在schema中指定的类型

时间:2017-02-08 15:41:46

标签: node.js mongodb mongoose mongoose-schema

我有一只猫鼬"费用"创建的对象成功保存到Mongo集合。在Costs对象的Mongoose模式中,我为每个列指定了类型:

'use strict';

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

var CostsSchema = new Schema({

    property_hash:String,

    month: Number,

    year: Number,

    spend: Number,

    updated_by: String,

    channel: String,

    source: String,

    updated: Date
});

mongoose.model('Costs', CostsSchema);

但是当我调用Costs.collection.insert()传递一个对象数组并将所有属性设置为字符串时,它们会毫无错误地保存到Mongo。

成功保存的示例无效对象:

{ channel: "websites",
month: "I should be an integer",
property_hash: "1234566",
source: "trade",
spend: "I am an invalid integer",
updated: "I am an invalid date",
updated_by: "fred",
year: "Invalid year" }

1 个答案:

答案 0 :(得分:0)

如果您查看docs,您可以看到这不是在Mongoose中实现的方法,而是在MongoDB驱动程序中实现,因此验证根本不会发生 - 文档直接保存到Mongo。

根据您的需要,您最好使用#insertMany方法。