使用Mongoose的MongoDB参考

多媒体广告

我正在尝试用Mongoose引用一个模型到另一个模型:

//产品型号

var productSchema = new mongoose.Schema({

   id: {type: Number, unique: true, required: 'product_id'},
   sku: {type: String, unique: true, required: 'product_sku'},
   name: {type: String, required: 'product_name'},
   short_description: {type: String},
   details: [{
      type: String
   }],
   categories: [{
      type: String
   }, {min: 1, max: 5}],

});

module.exports = mongoose.model('products', productSchema);

//订单模型

var orderSchema = new mongoose.Schema({

   id: {type: String, unique: true},
   date: {type: Date, default: Date.now},
   products_sold: {type: mongoose.Schema.Types.ObjectId, ref: 'products'},

});

module.exports = mongoose.model('orders', orderSchema);

我已经创建了一个ID为1的产品:

"_id": ObjectId('55a1ce54b058d142051ca61d'),
"id": 1,
"sku": "p0001",
"name": "test1",
"short_description": "test",
//etc

如果我做:

   var newOrder = new Order({
      id: 'order001',
      products_sold: 1,
      //etc
   });

   newOrder.save(function(err, data) {
      if(err){
         console.log(err);
      }else{
         console.log(data);
      }
   });

它因错误而失败:

  message: 'orders validation failed',
  name: 'ValidationError',
  errors: 
   { products_sold: 
      { [CastError: Cast to ObjectID failed for value "1" at path "products_sold"]

我如何在订单中填充有ID为1的产品数据的products_sold?

提前致谢

马修·安托洛维奇(Matthew Antolovich)

您正在指定该products_sold字段的类型为ObjectId,但是您尝试将a设置Number为其值。为了_id将对文档的引用存储在其他集合中,必须存储所引用文档的,而不是架构中具有的任意id字段。您可能需要_id在产品数据库中更改其类型以使用整数(然后在创建新产品时手动指定_id字段的值),或者需要将产品的_id存储在订单文档的product_sold字段中。

对评论的回应:

这是用于指定您自己的唯一_id字段的更新代码

产品型号

var productSchema = new mongoose.Schema({

   _id: {type: Number, unique: true, required: 'product_id'},
   sku: {type: String, unique: true, required: 'product_sku'},
   name: {type: String, required: 'product_name'},
   short_description: {type: String},
   details: [String],
   categories: [{
      type: String
      min: 1, 
      max: 5
   }],

}, {_id: false});

module.exports = mongoose.model('products', productSchema);

在productSchema中,您将看到有一个_id指定的,并将其设置为required,并且没有任何default值。这应该使Mongo可以使用Number您指定的任何内容,因为它是_id。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB和Mongoose:Mongoose可以在创建参考文档之前先映射参考文档吗?

来自分类Dev

使用mongoose从mongodb获取对象

来自分类Dev

使用mongoose与Mongodb进行聚合

来自分类Dev

使用mongoose从mongodb获取条目

来自分类Dev

如何使用Mongoose将json导入MongoDB

来自分类Dev

如何使用mongoose从MongoDb获取数据?

来自分类Dev

mongoose / mongodb不会使用PUT更新

来自分类Dev

使用mongoose在MongoDB中批量上传

来自分类Dev

使用mongoose将文件存储在mongodb中

来自分类Dev

在MongoDB中将ObjectId与Mongoose结合使用

来自分类Dev

使用Express,Mongoose搜索嵌套的MongoDB文档

来自分类Dev

无法使用Mongoose连接到MongoDB

来自分类Dev

使用Mongoose从MongoDB返回单键

来自分类Dev

使用Mongoose访问MongoDB中的数组条目

来自分类Dev

在MongoDB中将ObjectId与Mongoose结合使用

来自分类Dev

使用mongoDB和mongoose获取附近的地方

来自分类Dev

mongoose / mongodb不会使用PUT更新

来自分类Dev

在Angular App中使用Mongoose查询MongoDB

来自分类Dev

使用 Mongoose/MongoDB 构建我的模型

来自分类Dev

使用 mongoose/mongoDB 创建/更新对象

来自分类Dev

使用 Mongoose 和 MongoDB 删除用户

来自分类Dev

使用 mongoose 更新 mongoDB 中的数组

来自分类Dev

如何使用 Mongoose 从 MongoDB 读取数据?

来自分类Dev

更改mongodb空间参考

来自分类Dev

MongoDB/Morphia 中的参考

来自分类Dev

使用Mongoose在所有现有集合中查找参考文档

来自分类Dev

使用$ sum来计算对象的总值mongoose / mongodb

来自分类Dev

在对象数组上使用Mongoose / MongoDB $ addToSet功能

来自分类Dev

如何使用MongoDB / Mongoose.js查询类似OR / AND的条件?

Related 相关文章

热门标签

归档