小编tho*_*uts的帖子

ExpressJS和Mongoose REST API结构:最佳实践?

我正在使用NodeJS(Mongoose和ExpressJS)构建REST API.我认为我目前有一个非常好的基本结构,但我想知道这类项目的最佳实践是什么.

在这个基本版本中,一切都通过app.js文件.然后将每个HTTP方法传递给已请求的资源.这允许我动态地向API添加资源,并且相应地传递每个请求.为了显示:

// app.js

var express = require('express');
var mongoose = require('mongoose');

var app = express();
app.use(express.bodyParser());

mongoose.connect('mongodb://localhost/kittens');
var db = mongoose.connection;

var resources = [
  'kitten'
];

var repositories = {};

for (var i = 0; i < resources.length; i++) {
  var resource = resources[i];
  repositories[resource] = require('./api/' + resource);
}

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback() {
  console.log('Successfully connected to MongoDB.');

  app.get('/:resource', function (req, res) {
    res.type('application/json');
    repositories[req.params.resource].findAll(res);
  });

  app.get('/:resource/:id', function (req, res) { …
Run Code Online (Sandbox Code Playgroud)

rest mongoose mongodb node.js express

17
推荐指数
3
解决办法
1万
查看次数

Doctrine2为ManyToMany关系生成两个额外的表

问题

我正在使用Symfony2和Doctrine2(注释)建立数据库.我完全按照示例(Doctrine2关系文档),但不知何故,当我更新我的模式(doctrine:schema:update --force)时,它创建了两个额外的表.

我的两个实体是文章和区,代码如下.

文章实体:

/**
 *
 * @var \Doctrine\Common\Collections\ArrayCollection $districts
 *
 * @ORM\ManyToMany(targetEntity="District", inversedBy="articles")
 * @ORM\JoinTable(name="articles_districts",
 *     joinColumns={@ORM\JoinColumn(name="article_id", referencedColumnName="id")},
 *     inverseJoinColumns={@ORM\JoinColumn(name="district_id", referencedColumnName="id")}
 * )
 */
protected $districts;
Run Code Online (Sandbox Code Playgroud)

区实体:

/**
 *
 * @var \Doctrine\Common\Collections\ArrayCollection $articles
 * @ORM\ManyToMany(targetEntity="Article", inversedBy="districts")
 */
protected $articles;
Run Code Online (Sandbox Code Playgroud)

正在创建的两个额外表是:( articles_districts我在JoinTable部分中指定的那个)和article_district(另一个以某种方式自动创建的表).

articles_districts表按预期工作,并在创建新条目时插入ID.在article_district保持为空,因此,没什么用.我怎么摆脱它?

php mysql symfony doctrine-orm

8
推荐指数
1
解决办法
1460
查看次数

AngularJS在点击时改变控制器中的部分

我正在开发一个仪表板应用程序,您可以同时显示一组模块.我想为这些模块添加多个"视图".例如,Github模块的第一个视图是您的存储库列表.单击该模块中的存储库链接时,模块中的该视图将替换为显示该存储库的所有详细信息的新屏幕.

但是,我希望在此模块中隔离此视图,以便我可以同时继续使用其他模块(我根本不想切换页面).

我可以在这里找到我想要实现的一个例子:http://jsfiddle.net/5LgCZ/

在此示例中,您将单击水果或汽车,并在新视图中获取有关该模块中所述项目的详细信息.(它目前只是执行警报).

这是我到目前为止所做的,但我不知道如何控制器和视图的结构和方法:

<div ng-app="app">
    <div class="module" ng-controller="FruitCtrl">
        <h1>Fruit Module</h1>
        <ul>
            <li ng-repeat="fruit in fruits"><a href="#" ng-click="showDetail(fruit)">{{fruit}}</a></li>
        </ul>
    </div>
    <div class="module" ng-controller="CarCtrl">
        <h1>Car Module</h1>
        <ul>
            <li ng-repeat="car in cars"><a href="#" ng-click="showDetail(car)">{{car}}</a></li>
        </ul>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

提前感谢任何能够提供帮助的人.

javascript angularjs

8
推荐指数
2
解决办法
1万
查看次数

阻止访问AngularJS中的管理页面

我想知道AngularJS中最好的方法是保护管理页面,即普通用户不应该看到的页面.显然,会有后端身份验证,但由于AngularJS应用程序是客户端,人们理论上仍然可以查看路由并直接转到这些URL并查看管理页面.

我使用Express,PassportJS和MongoDB(Mongoose)作为我的后端.当然,他们无法与管理页面进行交互,因为在创建,删除时都有服务器端身份验证......但我更倾向于甚至不向用户提供页面,如果他们没有适当的访问.由于该应用程序完全是客户端JS,我认为这是不可能的,因为人们可以只修改路由和诸如此类的东西.最好的方法是什么?感谢您的任何意见!

security node.js express angularjs passport.js

8
推荐指数
1
解决办法
6112
查看次数

Symfony2在AJAX调用时返回空JSON,而变量不为空

问题

我正试图获得一个AJAX响应,所以我可以摆弄它,使我的表单更容易使用.当我使控制器(下面的代码)返回正常响应时var_dump(),我得到对象的输出,所以我知道查询没有错(我使用ID 1来查询调试).但是,当我返回输出时json_encode(),我只得到一个空的JSON文件.

视图中的HTML表单

<div id="content">
    <form id="myForm" action="{{path('snow_ajax')}}" method="POST" >
        Write your name here:
        <input type="text" name="name" id="name_id" value="" /><br />
        <input type="submit" value="Send" />
    </form>
</div>
Run Code Online (Sandbox Code Playgroud)

脚本在同一视图中

<script type="text/javascript">
    $(document).ready(function() {

        $("#myForm").submit(function(){
            var url=$("#myForm").attr("action");

            $.post(url,{
                formName:"ajaxtest",
                other:"attributes"
            },function(data){

                if(data.responseCode==200 ){
                    alert("Got your json!");
                }
                else{
                    alert("something went wrong :(");
                }
            });
            return false;
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

具有正常响应的控制器(工作)

public function ajaxAction()
{

    $location = $this->getDoctrine()->getRepository('SnowFrontBundle:Location')
        ->find(1);

    $output = var_dump($location);

    return $output;
}
Run Code Online (Sandbox Code Playgroud)

具有AJAX响应的控制器(不起作用,返回空JSON)

public function …
Run Code Online (Sandbox Code Playgroud)

mysql ajax symfony doctrine-orm

6
推荐指数
1
解决办法
5349
查看次数

Reveal.js多路复用不起作用

我按照以下链接的示例进行了操作:https://github.com/hakimel/reveal.js#multiplexing,但不知何故多路复用不起作用 - 当主幻灯片更新时客户端不会更新.我已经尝试使用reveal.js demo socket.io服务器,并尝试托管我自己的.

这两个选项都不起作用,我很确定我已经正确配置它们.这是我的配置代码:

主/ index.html中

  Reveal.initialize({
    controls: true,
    progress: true,
    history: true,
    center: true,

    multiplex: {
      id: 'e2bc6e79f19fbe63',
      secret: '13661966883862075064',
      url: 'revealjs.jit.su:80'
    },

    dependencies: [
      { src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.10/socket.io.min.js', async: true },
      { src: 'plugin/multiplex/client.js', async: true },
      { src: 'plugin/multiplex/master.js', async: true },
    ]
    // { src: 'plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; } }
    // { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
  });
Run Code Online (Sandbox Code Playgroud)

客户机/ index.html的 …

javascript node.js socket.io reveal.js

6
推荐指数
1
解决办法
2078
查看次数

最新的EmberJS不承认最新的车把

当我安装最新的EmberJS(1.0.0-rc.3)和最新的Handlebars(1.0.0-rc.4)时,我在访问该页面时在控制台中出现错误:

Uncaught Error: assertion failed: Ember Handlebars requires Handlebars 1.0.0-rc.3
or greater. Include a SCRIPT tag in the HTML HEAD linking to the Handlebars file
before you link to Ember.
Run Code Online (Sandbox Code Playgroud)

每当我通过下载jQuery,Handlebars和EmberJS进行'vanilla'安装时,我都会收到此错误.当我用Yeoman(发电机余烬和发电机 - 木炭)生成项目时,我也会遇到这些错误.一切都是最新的,我已经跑了

npm update -g yo generator-ember generator-charcoal grunt-cli bower
Run Code Online (Sandbox Code Playgroud)

没有找到更新.

有没有人以前遇到过这个问题,你是如何解决的?

javascript handlebars.js ember.js yeoman bower

4
推荐指数
1
解决办法
2228
查看次数