我已经获得了一些代码来修改。它是一个使用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
有谁知道造成这种情况的原因是什么?
答案 0 :(得分:0)
我想出来了。代码中有另一个地方有一个同名的动态模型,搞乱了。我能够删除所有对dynamoose的引用,因为它似乎不再被使用并且已经解决了这个问题。