2016-01-23 117 views
0

此文件定義爲Document對象保存/找到方法和出口它:如何在不同的JavaScript/Parse對象之間共享方法?

店/ 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 

此文件使用導出的方法:

的意見/ documents.js

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

這很好,如果我只有一個對象。問題是,我有很多。例如,我也有一個Section對象。

如果我遵循這個模式我會做到這一點:

店/ 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

回答

1

的一種方式是創建用於每一個實體的一個門面對象(Parse.Object的子類):

存儲/ document.js

'use strict' 

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

const Document = new ParseFacade('Document') 

module.exports = Document 

存儲/ 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 
    // ... 
}