种子数据库,或以编程方式在ApostropheCMS

时间:2018-03-06 15:09:33

标签: apostrophe-cms

我想做一个非常快速和肮脏的种子"我的数据库中有大量的博客文章...我很高兴与Mongo游标等合作,但似乎无法找到有效的生命周期方法来解决问题" plonk"将此代码转换为......这是概念验证的全部内容,因此不需要完美!

有人能指出我正确的方向吗?我似乎无法访问req方法中的construct,因此无法self.insert ...

2 个答案:

答案 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