Sails.js 风与帆/水线相结合

Sails.js 风与帆/水线相结合,sails.js,breeze,waterline,Sails.js,Breeze,Waterline,我有一个Node/Express应用程序的启动,该应用程序正在使用breeze执行CRUD操作。目前我正在使用Node/Sequelize->Postgres。作为NodeJS的新手,我最近才遇到SailJS。它看起来很酷,我想考虑使用我的应用程序。然而,我非常不清楚微风将如何与帆/水线相结合 具体来说,breeze提供了一个breeze sequelize适配器,然后它与sequelize理解的redderick中的sequelize通信 我想知道要做到以下哪一点有多困难: 让微风和水线通信,

我有一个Node/Express应用程序的启动,该应用程序正在使用breeze执行CRUD操作。目前我正在使用Node/Sequelize->Postgres。作为NodeJS的新手,我最近才遇到SailJS。它看起来很酷,我想考虑使用我的应用程序。然而,我非常不清楚微风将如何与帆/水线相结合

具体来说,breeze提供了一个breeze sequelize适配器,然后它与sequelize理解的redderick中的sequelize通信

我想知道要做到以下哪一点有多困难:

  • 让微风和水线通信,就像它继续通信一样

  • 使用带Sequalize的帆代替吃水线的帆

  • 我遇到过一些文章,其中涉及到了这个主题,但我还没有找到一篇涉及这个问题的深入文章

    提前谢谢

    编辑-breeze的示例(请记住,这是为了简单而修改的):

    客户端:

        (function(angular) {
            'use strict';
    
            angular.module('dataAccess')
                        .factory('Repository', ['breeze', '$rootScope', 'ListHelper', factory]);
    
            function factory(breeze, $rootScope) {
                return function (entityManagerProvider, resourceName) {
    
                    this.getByKey = getByKey;
                    this.buildAll = buildAll;
                    this.all = all;
                    this.buildQuery = buildQuery;
                    this.query = query;
                    this.executeQuery = executeQuery;
                    this.findInCache = findInCache;
                    var test = getMetastore();
                    var entityTypeName = getMetastore().getEntityTypeNameForResourceName(resourceName);
                    var entityType = getMetastore().getEntityType(entityTypeName);
    
                    //activate();
    
                    ////////
    
                    function activate () {
                        if (entityTypeName) {
                            //getMetastore().setEntityTypeForResourceName(resourceName, entityTypeName);
                        }
                    }
    
                    function buildAll () {
                        return breeze.EntityQuery
                            .from(resourceName);
                    }
    
                    function all (options) {
                        return executeQuery(this.buildAll(), options || {});
                    }
    
                    function query (predicate, options) {
                        return executeQuery(this.buildQuery(predicate), options || {});
                    }
    
                    function buildQuery (predicate) {
                        return predicate ? this.buildAll().where(predicate) : this.buildAll();
                    }
    
                    function executeQuery(query, options) {
                        return entityManagerProvider.manager()
                            .executeQuery(query.using(options && options.fetchStrategy ? options.fetchStrategy : breeze.FetchStrategy.FromServer));
                    }
    
                    function getMetastore() {
                        return manager().metadataStore;
                    }
    
                    function
    
     manager() {
                    return entityManagerProvider.manager();
                }
            };
        }
    
    })(window.angular);
    
    服务器:

        var fs = require('fs'),
            breezeSequelize = require('breeze-sequelize'),
            config = require('./config');
    
        var SequelizeManager = breezeSequelize.SequelizeManager;
        var SequelizeQuery = breezeSequelize.SequelizeQuery;
        var SequelizeSaveHandler = breezeSequelize.SequelizeSaveHandler;
    
        var manager = createSequelizeManager();
    
        var breeze = breezeSequelize.breeze;
    
        function createSequelizeManager() {
            var metadata = readMetadata();
            var sm = new SequelizeManager(config.db.dbConfig, config.db.options);
            sm.importMetadata(metadata);
            return sm;
        }
    
        function readMetadata() {
            var filename = "MetaData.json";
            if (!fs.existsSync(filename)) {
                throw new Error("Unable to locate file: " + filename);
            }
            return fs.readFileSync(filename, 'utf8');
        }
    
    //controller method, handles all breeze get requests
            function get (req, res, next) {
                var resourceName = req.params.entity;
                var entityQuery = entityQuery.fromUrl(req.url, resourceName);
                executeEntityQuery(entityQuery)
                    .then(function (r) {
                        res.json(r);
                }).catch(next);
            }
    
        function executeEntityQuery(entityQuery) {
            var query = new SequelizeQuery(manager, entityQuery);
            return query.execute();
        }
    

    我不熟悉breeze,但是,如果你提供一个你想执行的CRUD操作的例子,我可以带你通过帆。您只需键入$sails generate API[API name],即可在sails中生成JSON CRUD API。@JohnGalt问题在于breeze会自动生成所有CRUD。我将编辑OP,以展示breeze的一个实例。