我现在正试图弄清楚Mongo和Sailsjs的关系时会有一些噩梦。
目前,我有3个型号。用户,照片和类别:
用户
attributes: {
username : { type: 'string', unique: true },
first : { type: 'string', required: true },
last : { type: 'string', required: true },
email : { type: 'email', unique: true },
photos : { collection: 'photo', via: 'user' },
passports : { collection: 'passport', via: 'user' },
shareNum : { type: 'integer'}
}
照片
attributes: {
caption : { type : 'string' },
fid : { type : 'string' },
user : { model : 'user' }
}
分类
attributes: {
photo : { model: 'photo' },
category : { type: 'string'}
}
就目前而言,当用户上传照片时,我已将用户和照片模型链接在一起,我的代码从标题中获取用户ID,并显示在我的照片集合中一个 ObjectID ,它向我确认2现在是链接和相关的。
我现在要做的是在我的照片中添加类别。 “类别”字段将存储为数组,因为“照片”可以包含多个类别。
我想在这里做的是将类别集合中的预设类别存储为单独的文档。让我们说我们现在叫一只狗和一只猫。当用户上传包含Dog和Cat的类别数组的照片时,它会将其ObjectID存储在Photos集合中。
我尝试过以下操作,但我能做的就是存储实际的数组值,而不是关联ObjectID
照片
attributes: {
caption : { type : 'string' },
fid : { type : 'string' },
user : { model : 'user' },
categories : { model : 'category', type : 'array'}
}
分类
attributes: {
photo : { model: 'photo' },
category : { type: 'string'},
categories : { collection: 'photo', via: 'categories' }
}
我试图使用以下查询执行此操作:
Photo.create({caption :'var', user : '55cdeb6059798a3f424aa0cb', fid : 'rar', category : ['dog','cat']}).exec(function(err,created) {
console.log('test');
});
查询工作返回undefined然后测试。在我的数据库中,我有数组,但它将cat和dog的字符串存储为数组,而不是它们在Category集合中链接到的ID。
我是否必须先做一些事情来获取狗和猫的身份证?