【问题标题】:How to store array of ObjectID's in Mongo with Sails?如何使用 Sails 在 Mongodb 中存储 ObjectID 数组?
【发布时间】:2015-08-24 13:51:53
【问题描述】:

在我最初的问题之后: Handling relationships in Mongo and Sails?

我设法使用了这种方法,但是我现在需要按照我最初的想法来解决这个问题。例如,我有我的照片和类别模型和收藏,但现在我的类别还包含地址和业务详细信息。

在我的照片模型中,我有以下内容:

attributes: {
    caption  : { type  : 'string' }, 
    fid      : { type  : 'string' },
    user     : { model : 'user' },
    categories : { model : 'category', type : 'array'}
  }

在我的类别模型中,我有以下内容:

  attributes: {
    photo       : { model: 'photo' },
    category    : { type: 'string'},
    address     : { type: 'string'},
    phone       : { type: 'integer'},

    //Foreign Keys
    categories   : { collection: 'photo', via: 'categories', type : 'integer'}
  }

现在,如果我删除类型数组并只发送一个类别的单个 ObjectID,我可以让照片集合中的类别显示为 ObjectID,但是在我的情况下,一张照片可以有多个类别。

如果我尝试在查询中发送 ObjectID 数组,它们只会在数据库中显示为字符串数组。无论如何,我是否将这些存储为 ObjectID 的数组?

【问题讨论】:

    标签: mongodb sails.js


    【解决方案1】:

    基本上是many to many 关系。您可以像这样使用 Waterline 方案:

    照片模特

    attributes: {
      caption  : { type  : 'string' }, 
      fid      : { type  : 'string' },
      user     : { model : 'user' },
      categories : { collection : 'category', via : 'photos'}
    }
    

    类别模型

    attributes: {
      photos      : { collection: 'photo', via: 'categories' },
      category    : { type: 'string'},
      address     : { type: 'string'},
      phone       : { type: 'integer'},
    }
    

    【讨论】:

    • 谢谢,但是我将如何在查询中使用它。我现在正在执行以下操作,但是我仍然得到一个字符串数组,而不是 ObjectID: Photo.create({caption :'var', user : '55cdeb6059798a3f424aa0cb', fid : 'rar', category : ['55d5c47677c896adc7c05bd1 ','55d5c48377c896adc7c05bd3']}).exec(function(err,created) {console.log('test');});
    • 这是因为 Waterline 约定,在 MongoDB 中使用字符串而不是 ObjectID 处理关系。它仍然可以通过 Waterline 查询,但如果你想从原生 Mongo 查询它,它应该是字符串。
    • 有趣。当我过去将用户链接到照片时,用户 ID 始终在我的数据库中(通过 MongoChef)显示为 ObjectID
    • 对不起,它确实保存为 ObjectId,而不是 String。但我不知道为什么在我过去的项目中,所有的关系都保存为字符串。也许是因为 Mongo 和/或 Mongo Driver 版本?你用的是什么 Mongo 和sails-mongo 版本?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    相关资源
    最近更新 更多