我想做一个非常快速和肮脏的种子"我的数据库中有大量的博客文章...我很高兴与Mongo游标等合作,但似乎无法找到有效的生命周期方法来解决问题" plonk"将此代码转换为......这是概念验证的全部内容,因此不需要完美!
有人能指出我正确的方向吗?我似乎无法访问req
方法中的construct
,因此无法self.insert
...
答案 0 :(得分:3)
查看apostrophe-tasks模块。这使您可以在自己的模块中轻松添加命令行任务,并轻松获取具有完全管理员权限的$desktop | Where-Object {$officetd -contains $_ -and $officepro -contains $_}
对象来执行此类工作。
您的模块可以从req
:
self.apos.tasks.add
construct
答案 1 :(得分:0)
继@Tom Boutell的回复后,这是我的最终工作代码......
construct: function(self, options) {
self.apos.tasks.add(self.__meta.name, 'insert-blog-articles', function(apos, argv, callback) {
console.info(`Running ${self.__meta.name}:insert-blog-articles`)
if(!argv.create) throw new Error('Please pass a number of articles to create using --create=n')
const req = self.apos.tasks.getReq()
const numberToCreate = Array.from(Array(argv.create).keys())
numberToCreate.forEach(item => {
let blogPost = self.newInstance()
blogPost = Object.assign({}, blogPost, {
title: 'Post about cats!',
image: 'https://www.vetbabble.com/wp-content/uploads/2016/11/hiding-cat.jpg',
published: true,
testData: true
})
self.insert(req, blogPost)
.then(result => { console.info('Inserted doc!', result) })
})
})
self.apos.tasks.add(self.__meta.name, 'show-hide-articles', function(apos, argv, callback) {
console.info('Running task show-hide-articles', argv)
const set = argv.show ? { published: true } : { published: false }
self.apos.docs.db.update(
{ type: 'apostrophe-blog', testData: true },
{ $set: set },
{ multi: true }
)
.then(result => {
argv.show && console.info('Docs updated, now showing posts')
!argv.show && console.info('Docs updated, now hiding posts')
})
.catch(error => { console.warn('Error updating docs', error) })
})
}
其中(粗略地)给了我两个任务:
node app apostrophe-blog:insert-blog-articles --create=100
- >创建我的100篇博客文章
node app apostrophe-blog:show-hide-articles --show
- >将这些文章published
标记设置为true或false,具体取决于arg