[英]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)
}
我该怎么做,所以我只需要编写一次save
和find
方法,然后使用它们,例如,像Document.save
和Section.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.