小编rek*_*irt的帖子

如何防止Firebase中出现重复的用户属性?

FirebaseSimpleLogin用来创建用户并处理身份验证.

当我尝试通过该$createUser()方法创建一个简单登录的新用户时,如果已经使用了电子邮件地址,firebase将不会创建用户.但是,$set()在创建它们之后,我还使用将创建的用户保存到我的firebase中,并将其user.uid用作密钥.当尝试写入数据库时​​,即使用户名不是唯一的,firebase也会保存记录,因为简单登录只需要电子邮件和密码.那么,当用户名不被用作用户对象的密钥时,如何验证用户名是否唯一?

我正在创建这样的新用户:

$scope.createUser = function() {
  $scope.auth.$createUser('trinker@gmail.com', 'password').then(function(user, err) {
    if (!err) {
      ref.child('users/' + user.uid).set({
        email: user.email,
        username: user.username
      });
      console.log("success!");
    }else{
      console.log(err.message);
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

我的用户对象如下所示:

{
  "users" : {
    "simplelogin:28" : {
      "email" : "trinker@gmail.com",
      "username" : "jtrinker"
    },
    "simplelogin:30" : {
      "email" : "test@gmail.com",
      "username" : "jtrinker"
    }
  }
}

}
Run Code Online (Sandbox Code Playgroud)

我需要使用uid作为每个用户的密钥,但我仍然需要用户名是唯一的.

如果一个对象中的属性对于另一个对象内的属性不是唯一的,我怎么能阻止firebase保存记录?

angularjs firebase firebase-security angularfire firebase-realtime-database

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

为什么我不能解析保存在Ruby中的变量的日期字符串?

我需要在我的Rails应用程序中运行以下代码:

ActiveSupport::TimeZone["Central Time (US & Canada)"].parse(game.date).utc.to_date.strftime("%_m/%d")[1..-1]
Run Code Online (Sandbox Code Playgroud)

游戏在哪里 @games.each do |game|

但这不起作用,我得到错误,TypeError: no implicit conversion of ActiveSupport::TimeWithZone into String.

但是,我可以运行:

ActiveSupport::TimeZone["Central Time (US & Canada)"].parse("2014-04-11 12am").utc.to_date.strftime("%_m/%d")[1..-1]
Run Code Online (Sandbox Code Playgroud)

返回"4/11"

如何使用上面的代码与`game.date'而不是硬编码的字符串?

编辑

游戏对象如下所示(来自db/seeds.rb):

Game.create(id: 9, date: "2014-04-11 12am", time: "705PM", opponent: "Jacksonville", away: false, event: "friday night fireworks")
Run Code Online (Sandbox Code Playgroud)

编辑2

在我做game.date的rails控制台中,它返回:

Fri, 11 Apr 2014 00:00:00 UTC +00:00
Run Code Online (Sandbox Code Playgroud)

所以它似乎不是一个字符串.

ruby ruby-on-rails activesupport

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

滚动前为什么平滑滚动会闪烁?

我正在建立一个单页网站,通过锚标签分成几个部分.当您单击导航链接时,它会平滑滚动到该部分(仅限资金区域和我们已完成),但是,当您单击链接时,它似乎有大约50%的时间,它平滑滚动到闪烁的背景图像jQuery向上或向下滚动.

对我来说,似乎HTML正试图立即进入锚点,因此闪烁,但随后jQuery说,举起,我需要慢慢滚动.

我不知道如何解决这个问题.

jQuery的:

// SlowScroll Funding Areas
$(document).ready(function(){

// 'slowScrollTop' is the amount of pixels #teamslowScroll
// is from the top of the document

    var slowScrollFunding = $('#funding-areas').offset().top;

// When #anchor-aboutus is clicked

    $('#anchor-funding-areas').click(function(){
        // Scroll down to 'slowScrollTop'
        $('html, body, #home-wrap').animate({scrollTop:slowScrollFunding}, 1000);
    });
});

// SlowScroll About Us
$(document).ready(function(){
// 'slowScrollTop' is the amount of pixels #slowScrollTop
// is from the top of the document

    var slowScrollTop = $('#about-us').offset().top + 446;

// When #anchor-aboutus is clicked

$('#anchor-aboutus').click(function(){
    // …
Run Code Online (Sandbox Code Playgroud)

jquery scroll smooth-scrolling

9
推荐指数
2
解决办法
3269
查看次数

无法在Windows命令提示符或git bash中运行iex

我刚刚在我的Windows 7机器上通过chocolatey安装了elixir.在C目录的根目录下,在管理员命令提示符下,我运行:

c:\> cinst elixir
Run Code Online (Sandbox Code Playgroud)

这成功安装了erlang和elixir - v.1.0.4.没有失败,所有成功的消息.然后我重新启动命令提示符并运行

c:\> iex.bat
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

'iex.bat'未被识别为内部或外部命令,可操作程序或批处理文件.

我经常运行一台mac,所以当谈到Windows时我很无知.也尝试iex在git bash中运行,但没有运气.我如何运行iex?

elixir chocolatey

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

我应该在Ember.js中过滤Route或Controller中的记录吗?

我正在编写Code School的Ember.js课程,他们首先在控制器中使用过滤器方法,解释控制器用于装饰模型.但是在接下来的部分中,他过滤了Route中的记录,将方法链接到'store.findAll'.

我对Ember比较新,所以这很令人困惑.在第一个实例中,我们有一系列产品,我们希望过滤这些产品以检索要在索引模板中发布的onSale产品数组.我们在索引路线上检索了模型:

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.findAll('product');
  }
});
Run Code Online (Sandbox Code Playgroud)

然后,Route将产品发送到控制器,在那里我们可以装饰数据并将其减少到只有3个产品.

App.IndexController = Ember.ArrayController.extend({
  onSale: function() {
    return this.filterBy('isOnSale').slice(0, 3);
  }.property('@each.isOnSale')
});
Run Code Online (Sandbox Code Playgroud)

我明白这一点.但随后我们创建了一个指向'products/onsale'模板的链接,该模板将列出所有onsale产品.我们创建了一个ProductsOnsaleRoute,我们使用modelFor从ProductsRou​​te中提取父模型,然后我们继续在Route中过滤而不是创建ProductsOnsaleController并在那里过滤.对此有解释吗?

App.ProductsOnsaleRoute = Ember.Route.extend({
  model: function() {
    return this.modelFor('products').filterBy('isOnSale');
  }
});
Run Code Online (Sandbox Code Playgroud)

我想我的问题是......对我来说创建一个ProductsOnsaleController并在那里过滤会更好吗?

App.ProductsOnsaleController = Ember.ArrayController.extend({
  sale: function() {
    return this.filterBy('isOnSale');
  }
}):
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

ember.js

7
推荐指数
1
解决办法
2196
查看次数

如何在React/Webpack中创建代理以调用外部API

我想向我无法控制的外部API发出GET请求.由于API的安全性,我的react应用程序无法直接向端点发出ajax请求.因此,我想创建一个简单的代理作为证明这里

package.json file看起来像这样:

{
  "name": "my-stack",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^15.6.1",
    "react-dom": "^15.6.1",
    "react-router-dom": "^4.2.2",
    "react-scripts": "1.0.13"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "proxy": {
    "https://gold-feed.com/paid/*": {
        "target": "https://gold-feed.com/paid",
        "changeOrigin": true
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我的ajax请求看起来像这样:

const apiUrl = 'https://gold-feed.com/paid/<apiID>/all_metals_json_usd.php';

jQuery.ajax({
  method: 'GET',
  url: apiUrl,
  success: (item) => {
    this.props.addItem(item);
  }
});
Run Code Online (Sandbox Code Playgroud)

但它似乎没有做任何事情.我仍然收到以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' …
Run Code Online (Sandbox Code Playgroud)

proxy reactjs webpack create-react-app

7
推荐指数
1
解决办法
8613
查看次数

Firebase/AngularFire中的数据建模最佳实践

我是第一次在Firebase中开发一个应用程序,并且很好奇我应该如何在两个对象a user和a 之间建模数据post.我来自更多的关系数据库背景,不仅好奇这是如何在非关系数据库中完成的,而且特别是如何在Firebase中设置两个对象之间的关系.

例如,我的应用程序有很多用户,每个用户创建许多帖子.

User {
    firstName: String,
    lastname: String,
    userName: String
}

Post {
    title: String,
    content: String,
    date: Date,
    writtenBy: [User object?]
}
Run Code Online (Sandbox Code Playgroud)

我应该如何在Firebase中构建这两个对象,以便帖子属于用户,但是无论用户如何都可以查询所有帖子,并且可以在不中断其他对象的数据和/或关系的情况下编辑用户和帖子对象?

我应该如何通过firebase创建新的"关系"对象:

sync.$set({userA: {
   firstname: "Billy",
   lastName: "Bob",
   userName: "BillyBob",
   Posts: {
       // .....
   }
}
});
Run Code Online (Sandbox Code Playgroud)

谢谢!

json nosql angularjs firebase angularfire

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

我应该总是通过$ push()将新对象添加到对象列表中吗?

我正在为Firebase和AngularFire创建一个由用户,帖子和评论组成的数据结构.我的印象是用户的密钥/ ID是用户名,而评论和帖子的密钥/ ID将是自动生成的firebase密钥.

我一直在研究angularfire文档,并对$push()使用该方法时添加到对象的自动生成的键(name())感到困惑.

查看firebase网站上的一些示例,我看到Users对象的示例没有自动生成的密钥 - 单个用户的密钥是用户名 - 但同时添加密钥数组通过的对象 $push

我的问题是:

1)我应该一直使用firebase自动生成的密钥吗?如果没有,那么如何添加新用户,因为$push()自动创建密钥,并$set()重置所有用户?

2)$id和之间有什么关系name()

示例数据

来自https://www.firebase.com/docs/web/guide/saving-data.html

文档显示以下Users对象:

{
  "users": {
    "alanisawesome": {
      "date_of_birth": "June 23, 1912",
      "full_name": "Alan Turing"
    },
    "gracehop": { 
      "date_of_birth": "December 9, 1906",
      "full_name": "Grace Hopper"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在不重置当前用户$set()或添加angularfire id的情况下添加更多用户push()

然后是一个带有生成id的Posts对象:

{
  "posts": {
    "-JRHTHaIs-jNPLXOQivY": {
      "author": "gracehop",
      "title": "Announcing COBOL, a New Programming Language"
    },
    "-JRHTHaKuITFIhnj02kE": {
      "author": "alanisawesome", …
Run Code Online (Sandbox Code Playgroud)

angularjs firebase angularfire

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

节点和节点中间件中的'req'和'res'参数是什么?

我是Node和Express的新手,其他与构建带有节点requestresponse参数的Web应用程序相关的层实际上让我感到困惑.我的困惑在于这两个参数通常存在于函数中,但通常不会声明其中的一个或两个.此外,大多数情况下会抛出一个额外的参数,比如'next'或其他什么.例如,我有一个API的以下路由器:

router.route('/teams')
    // create a team at POST http://localhost:8080/api/teams
    .post(function(req, res) {
        var team = new Team();
        team.name = req.body.name;
        team.location = req.body.location;

        // save the new team and check for errors
        team.save(function(err) {
            if (err) {
                res.send(err);
            };
            res.json({ message: 'Team created!' });
        }); 
    })
    // GET all the teams at GET http://localhost:8080/api/teams
    .get(function(req, res) {
        Team.find(function(err, teams){
            if (err) {
                res.send(err);
            };
            res.json(teams);
        });
    });
Run Code Online (Sandbox Code Playgroud)

双方.post.get 调用一个函数req,并 …

javascript connect node.js express

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

如何创建一个Ember计算属性,为属性添加1?

我刚刚学习Ember,我对计算属性有点困惑.指南中的所有内容都使用字符串,比如使用名字和姓氏创建全名的计算属性等.无论如何,我对如何使用整数感到困惑,因为似乎语法几乎要求使用字符串.

举个例子,我的控制器上有一个属性叫做count.

import Ember from 'ember';

export default Ember.Controller.extend({
  count: 0,

  counter: Ember.computed('count', function() {
    var num = `${this.get('count')}`;
    var newNum = parseInt(num) + 1;
    this.set('count', newNum);
    return this.get('count');
  })
});
Run Code Online (Sandbox Code Playgroud)

我知道这段代码非常糟糕,我只是想说明我正在尝试做什么并且失败了.为什么Ember.computed将字符串作为其第一个参数?

为什么我必须使用字符串this.get,this.set当我使用整数而不是字符串?我必须手动解析int或者它返回一个字符串,为什么它将我的count属性转换为字符串?

无论如何,在我跑步时的灰烬检查员

$E.get('count')

它确实成功添加1,但无法继续添加1,这使我认为它不会更新实际count属性.

非常感谢.我很感激帮助.

javascript ember.js computed-properties

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