繁体   English   中英

如何在不同的JavaScript /解析对象之间共享方法?

[英]How to share methods among different JavaScript/Parse objects?

该文件定义了Document对象的保存/查找方法,并将其导出:

商店/document.js

import Parse from 'parse'
import _ from 'lodash'

Parse.initialize('APP_ID', 'CLIENT_ID')

const Document = {}
const ParseDocument = Parse.Object.extend('Document')

Document.save = (json) => {
  const document = new ParseDocument()
  return document.save(json)
}

Document.find = () => {
  const query = new Parse.Query(ParseDocument)
  return query.find().then((results) =>
    _.map(results, (result) =>
      result.toJSON()
    )
  )
}

export default Document

该文件使用导出的方法:

views / documents.js

submit () {
  const document = {
    title: this.title,
    content: this.content
  }
  Document.save(document).then(() =>
    Document.find().then((result) => /* DO STUFF */)
  )
}

如果我只有一个对象,这很好。 问题是,我有很多。 例如,我也有一个Section对象。

如果遵循此模式,则必须这样做:

store / section.js

import Parse from 'parse'
import _ from 'lodash'

Parse.initialize('APP_ID', 'CLIENT_ID')

const Section = {}

...

Section.save = (json) => {
  const section = new ParseSection()
  return section.save(json)
}

我该怎么做,所以我只需要编写一次savefind方法,然后使用它们,例如,像Document.saveSection.save

一种方法是为每个实体(Parse.Object的子类)创建一个外观对象:

商店/document.js

'use strict'

const ParseFacade = require('./parse-facade')

const Document = new ParseFacade('Document')

module.exports = Document

store / section.js

'use strict'

const ParseFacade = require('./parse-facade')

const Section = new ParseFacade('Section')

module.exports = Section

parse-facade.js

'use strict'

const Parse = require('parse')
const _ = require('lodash')

Parse.initialize('APP_ID', 'CLIENT_ID')

function ParseFacade (className) {
    this.ParseObject = Parse.Object.extend(className)
}

ParseFacade.prototype.save = function save (json) {
    const PO = this.ParseObject
    const document = new PO()
    return document.save(json)
}

ParseFacade.prototype.find = function find () {
    const PO = this.ParseObject
    const query = new Parse.Query(PO)
    return query.find().then((results) =>
        _.map(results, (result) => result.toJSON()))
}

module.exports = ParseFacade

要将功能添加到给定实体,请照常添加属性:

Document.doSomething = function doSomething (...args) {
    // this.ParseObject refers to the subclassed Parse.Object
    // ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM