最近我写了一个关于nodejs的博客,当谈到为帖子添加一些标签时,出现了问题。在我看来,帖子和标签之间的关系是多对多的,每个帖子有几个标签,反过来,每个标签也匹配一些帖子。所以我在mongodb中创建一个标签集合和一个帖子集合。
$object = $this->context->getObject();
// Create data
if (null == $object->getId()) {
-- enter code for check validation
}
// Update data
if ($object->getId() != null) {
-- check value (if same data just return;) --
-- if value has changed just enter code for check validation --
}
并将标签存储为post中的数组。如我们所知,当我创建帖子时,我将通过方法POST从html获取帖子的tagName,所以我必须使用
exports.Post=mongolass.model("Post",{
author:{type:Mongolass.Types.ObjectId,ref:"User"},
title:{type:"string"},
content:{type:"string"},
pv:{type:"number"},
tagIds:[{tagId::Mongolass.Types.ObjectId}]
});
exports.Tag=mongolass.model("Tag",{
tagName:{type:"string"}
});
exports.Tag.index({tagName:1},{unique:true}).exec();
获取对象标记,并使用
getTagByName:function getTagByName(tagName){
return Tag.find({tagName:tagName}).exec();
}
获取tagId,不幸的是,因为帖子有很多标签,所以我必须使用for循环来获取帖子的所有tagId,我也想将这些tagId收集到一个数组,因此我可以将它推送到我的Post模型,但循环和回调使其变得困难。 任何建议表示赞赏。