【问题标题】:MongoDB : Missing the key _id in the itemMongoDB:项目中缺少键 _id
【发布时间】:2018-03-14 22:05:14
【问题描述】:

我得到了一些代码来修改。它是一个使用 Mongoose 与 MongoDb 实例交互的 Node.js 应用程序。在 Mongoose 中已经设置了几个模式,我添加了一些。其中包括这两个模式,它们分解了先前存在的模式(在小数据上工作得很好):

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

var MapConvertedProjectSchema = new Schema(
{
    project_id : {
        type: String,
        default: ""
    },
    dataset_id : {
        type: String,
        default: ""
    },
    properties:{
        type: {},
        default: {}
    }
});

MapConvertedProjectSchema.pre('save', function(next) {
    next();
});

mongoose.model('MapConvertedProject', MapConvertedProjectSchema);

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

var MapConvertedLayerSchema = new Schema(
{
    parent_id: 
    {
        type: mongoose.Schema.Types.ObjectId
    },
    class: 
    {
        type: String,
        default: 'MapLayer',
        trim: true
    },
    properties: 
    {
        type: {},
        default: {}
    }
});


//Hook a pre save method to clean date
MapConvertedLayerSchema.pre('save', function(next) {
    next();
});

mongoose.model('MapConvertedLayer', MapConvertedLayerSchema);

我像这样使用 MapConvertedLayer 架构:

var mongoose = require('mongoose');
var LayerConverted = mongoose.model('MapConvertedLayer');
var newLayer = new LayerConverted();
//newLayer._id is automatically populated with a value
//... add other properties
newLayer.save(function(err)
{
    if(err)
    {
        //...
    }
});

这没有任何我能辨别的问题。但是,如果我使用 MapConvertedProject 尝试类似的代码,我会收到一个错误:

var mongoose = require('mongoose');
var ProjectConverted = mongoose.model('MapConvertedProject');
var map_converted = new ProjectConverted();
//map_converted._id is undefined
//I tried adding the comment below to create an _id manually, but it didn't make a difference when I tried to save
//map_converted._id = mongoose.Types.ObjectId();
console.log("Project Converted ID: " + map_converted._id);
//... fill out the other properties on the schema
map_converted.save(function(err)
{
    if(err)
    {
        //...
    }
});

保存会产生这个错误:

ValidationException:一个或多个参数值无效:项中缺少键_id

有人知道这是什么原因吗?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    我想通了。代码中的另一个地方有一个同名的 dynamoose 模型,它把事情搞砸了。我能够删除所有对 dynamoose 的引用,因为它似乎不再被使用并且解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 2020-07-30
      • 2018-07-27
      • 1970-01-01
      • 2013-10-15
      相关资源
      最近更新 更多