当前位置: 首页 > 面试题库 >

如何在Mongoose模式中向数组添加数据

方永贞
2023-03-14
问题内容

假设采用以下架构,我尝试使用Mongoose保存一些GeoJSON数据

var simpleSchema = new Schema({
    properties:{
        name:String,
        surname:String
    },
    location : {
        type : String,
        coordinates : [ Number , Number ]
    }
});

这就是我尝试保存文档的方式

var a = new simple({properties:{name:"a", surname:"b"}, location:{type:"Point", coordinates:[1, 0]}}).save(function(err){...});

但是,我在数据库中得到的是

ObjectId("542da9ab0882b41855ac3be0"), "properties" : { "name" : "a", "surname" : "b" }, "__v" : 0 }

看起来整个位置标签和数据都丢失了。这是定义架构的错误方法还是保存文档的错误方法?


问题答案:

当使用type嵌入式对象中命名的字段时,您需要使用一个对象来定义其类型,或者Mongoose认为您正在定义对象本身的类型。

因此,将您的架构定义更改为:

var simpleSchema = new Schema({
    properties:{
        name:String,
        surname:String
    },
    location : {
        type : { type: String },
        coordinates : [ Number , Number ]
    }
});


 类似资料:
  • 我想用相当复杂的方案更新文档。 我想用原子更新来做(而不是在内存中修改它,然后调用.save())。 }); ////////////////////////////////////////////////////////////// 我有事件id(_id)、会话(id)和需要添加/删除项到投票人数组。

  • 请您告诉我,在创建Mongoose模式时,有什么方法可以限制数组的大小。例如

  • 问题内容: 我坚持了这一点,但我无法继续前进-我猜解决方案很简单,但我不知道。我正在尝试在reducer中添加条目,以便输入的数据看起来像这样: 到目前为止,这是我得到的最接近的内容,但是,它没有添加新的唯一条目,而是替换了已经存储的条目。另外,我还需要能够将此项目添加到entryId,entryName还不存在的空状态,以避免出现错误: 知道我在做什么错吗? 问题答案: 如果要在数组的末尾添加元

  • 问题内容: 您能否告诉我在创建Mongoose模式时是否有任何方法可以设置数组大小的限制。例如 问题答案: 稍微调整一下架构设置,即可添加验证选项:

  • 我有这样的代码: 当我这样做邮递员的时候: 我得到以下错误: d:\stijn\documenten\eva-project-groep-6\api\node_modules\mongoose\lib\schema\obj ectid.js:134抛出新的CastError('objectid',value,this.path);^Error at mongooseerror.casterror(