我试图在不同的集合上设置一个产品类别,但只有在docpad.coffee中定义的最后一个集合实际上在尝试时才设置它
firstCollection: ->
@getCollection("html").findAllLive().on "add", (model) ->
model.setMeta({category: 'first'})
secondCollection: ->
@getCollection("html").findAllLive().on "add", (model) ->
model.setMeta({category: 'second'})
对于每个集合的所有文档, document.category
将为“秒”。
如何在集合中按文档单独设置相同的元数据?
答案 0 :(得分:2)
你想解决什么问题?因为你的方法不起作用。如果你分享你想要做的事情,我们或许可以提出另一种方法。
您当前的方法无效,因为您正在设置名为“category”的元数据属性,该属性是一个字符串。该元数据属性存在于集合中的文档而不是集合本身。
两个集合都指向同一组文档。每个单独的文档只能具有该属性的单个值。它不能同时是“第一”和“第二”。设置它的最后一个获胜,在这种情况下,将其设置为“秒”的事件最后发生,因此所有文档都具有“秒”作为该元数据属性的值。
答案 1 :(得分:1)
更新:我找到了更好的方法:model.setMetaDefaults({foo:'bar'})
例如,要创建一个默认cssClass
post
的博客集合:
collections: {
blog: function() {
return this.getCollection("documents")
.findAllLive({relativeOutDirPath:'blog'}, [{filename:-1}])
.on("add", function (model) {
model.setMetaDefaults({'cssClass': 'post'})
});
}
},
这将包含在您的docpad.coffee
文件中,或者在我的情况下,docpad.js
。
在https://github.com/nfriedly/nfriedly.com/blob/master/docpad.js#L72查看完整上下文的工作示例(集合称为“techblog”,以72开头)。