小编Cod*_*000的帖子

如何将文件上传到Node.js中的GCloud?

我看到了什么:


感想:

我目前在本地存储图像并将图像路径存储在Firebase实时数据库中.我想将图像存储在GCloud中(以降低成本).


题:

我应该如何修改我的当前代码以上传到GCLOUD?


当前代码:

var express = require("express");
var router = express.Router();
var flash = require("connect-flash");

var firebase = require("firebase");

var multer = require("multer");
var upload = multer({dest:"./public/images/uploads/", limits: {fileSize: 250000}}).single("image");


router.get("/", function(req, res, next){

    if (firebase.auth().currentUser == null) {
        global.page_name = "login";
        res.render("users/login");
    }
    else {
        global.page_name = "upload";
        res.render("upload");
    }
});

router.post("/", function(req, res, next){
    upload(req,res, function (err) {
        if (err) {
            req.flash("error_msg", "File too large. Max Size: 250KB");
            res.redirect("/upload"); 
            return
        } …
Run Code Online (Sandbox Code Playgroud)

javascript node.js google-cloud-storage firebase multer

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

如何将childNode从一个节点复制到另一个节点?

情况:

我需要下载childNode,然后将()设置为另一个节点.

问题是我想在childNode的得分属性达到100时才这样做.

我应该在何时何地检查帖子的分数是否为100或更高,以及如何仅将其复制到新索引一次?


我的想法是什么:

加载帖子后,检查其分数.如果> = 100,请检查数据库是否属于这种情况.然后将节点推送到新索引.


问题:

每次加载帖子时,如何阻止节点上传,因为多次加载时得分> = 100?我需要它只发生一次!


解决方案代码:

if (funPost.score >= global.hotNumber && funPost.hot == false) {
            var hotPostRef = firebase.database().ref("hot/section/"+key);
            var hotPost = {
                title: funPost.title,
                image: funPost.image,
                id: funPost.id,
                key: funPost.key
            }
            hotPostRef.set(hotPost);
            funPostRef.update({"hot": true});
        }
   else if (funPost.score <= (global.hotNumber - 25) && funPost.hot == true) {
        var hotPostRef = firebase.database().ref("hot/section/"+key);
        hotPostRef.remove();
        funPostRef.update({"hot": false});
   }
Run Code Online (Sandbox Code Playgroud)

解决方案:我最终使用了布尔标志.

javascript node.js firebase firebase-realtime-database

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

如何使用Node.js,Angular.js和Firebase实现无限滚动?

更新8:

码:

<% include ../partials/header %>


<script src="https://www.gstatic.com/firebasejs/3.5.2/firebase.js"></script>
<script src="https://cdn.firebase.com/libs/firebase-util/0.2.5/firebase-util.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.js"></script>
<script src="https://cdn.firebase.com/libs/angularfire/1.1.4/angularfire.min.js"></script>

<script>


  var config = {
     info
  };

  firebase.initializeApp(config);

    var fb = firebase.database().ref("posts/fun");

    var app = angular.module('app', ['firebase']);

    app.controller('ctrl', function ($scope, $firebaseArray, $timeout) {

        $scope.data = [];
        var _start = 0;
        var _end = 4;
        var _n = 5;

        $scope.getDataset = function() {

            fb.orderByChild('id').startAt(_start).endAt(_end).limitToLast(_n).on("child_added", function(dataSnapshot) {

                $scope.data.push(dataSnapshot.val());
                console.log("THE VALUE:"+$scope.data);

            });

            _start = _start + _n;
            _end = _end + _n;

        };


        $scope.getDataset()

    });

    // Compile the whole …
Run Code Online (Sandbox Code Playgroud)

javascript node.js angularjs firebase firebase-realtime-database

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

如何使用新的Firebase(2016)实现无限滚动?

题:

如何使用javascript(和node.js)在Firebase中实现高效的无限滚动?


我检查了什么:

使用Firebase实现无限滚动?

问题:老火山^

使用AngularJs和Firebase进行无限滚动


代码来自: 使用AngularJs和Firebase进行无限滚动

"首先,我建议在你的Firebase中创建一个索引.对于这个答案,我创建了这个:

{
   "rules": {
      ".read": true,
      ".write": false,
      "messages": {
         ".indexOn": "id"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

然后,让我们用Firebase做一些魔术:

// @fb: your Firebase.
// @data: messages, users, products... the dataset you want to do something with.
// @_start: min ID where you want to start fetching your data.
// @_end: max ID where you want to start fetching your data.
// @_n: Step size. In other words, how much data you want to fetch from …
Run Code Online (Sandbox Code Playgroud)

javascript node.js infinite-scroll firebase firebase-realtime-database

5
推荐指数
1
解决办法
1247
查看次数

如何在我的无限卷轴中首先显示我的热门帖子,按照火力降序的降序排列?

我做了什么(做得不正确):

码:

<script>

    var app = angular.module('app', ['firebase']);

    app.controller('ctrl', function ($scope, $firebaseArray, $timeout) {


            $scope.data = [];
            var _n = Math.ceil(($(window).height() - 50) / (350)) + 1;
            var start = 0;
            var end = _n - 1;
            var lastScore = <%=lastScore%>;
            console.log("FIRST FIRST FIRST LAST SCORE:" + lastScore);
            var firstElementsLoaded = false;

            $scope.getDataset = function() {

                fb.orderByChild('score').endAt(lastScore).limitToLast(_n).on("child_added", function(dataSnapshot) {

                    lastScore = dataSnapshot.child("score").val() - 1;
                    console.log("LAST TOP LIKED:"+ lastScore);

                    $scope.data.push(dataSnapshot.val());
                    $scope.$apply();
                    console.log("THE VALUE:"+$scope.data);

                    $scope.data.splice(start, end).concat($scope.data.reverse());
                    $scope.$apply();
                    start = start + _n; …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs firebase firebase-realtime-database

5
推荐指数
1
解决办法
305
查看次数

部署到App Engine会产生gulp错误吗?

我在终端中写的像往常一样部署:

gcloud app deploy
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Application startup error:

> meanjs@0.5.0 start /app
> gulp

sh: 1: gulp: not found

npm ERR! Linux 3.16.0-4-amd64
npm ERR! argv "/nodejs/bin/node" "/nodejs/bin/npm" "start"
npm ERR! node v6.9.5
npm ERR! npm  v3.10.10
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! meanjs@0.5.0 start: `gulp`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the meanjs@0.5.0 start script 'gulp'.
npm ERR! Make sure you have the …
Run Code Online (Sandbox Code Playgroud)

google-app-engine node.js google-cloud-platform gulp

5
推荐指数
1
解决办法
498
查看次数

如何防止使用 Multer 上传文件,除非它们是图像?

正如标题所说。

我到处寻找,找不到答案。


代码:

var upload = multer({dest:"./public/images/uploads/", limits: {fileSize: 250000}}).single("image");
Run Code Online (Sandbox Code Playgroud)

问题

如果我选择上传 pdf,这并不妨碍我上传 pdf。

javascript node.js multer

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

创建用户之前如何验证电子邮件?

情况:

我正在尝试向刚刚注册的用户发送验证电子邮件。

除非他验证自己的电子邮件地址,否则不会创建他的帐户。


我的代码:

 var userAuth = firebase.auth().currentUser;

        userAuth.sendEmailVerification().then(function() {

            req.flash('success_msg', 'Please verify your email address. You have 60 seconds');

            setTimeout(function(){ 

                if(userAuth.emailVerified) {
                    firebase.auth().createUserWithEmailAndPassword(email, password).then(userData => { 

                        var user = {
                            email: email,
                            username: username,
                        }

                        firebase.database().ref('users/'+userData.uid.toString()).set(user);

                        req.flash('success_msg', 'You have registered and logged in.');
                        res.redirect('...');

                    }).catch(error => {
                        var errorCode = error.code;
                        var errorMessage = error.message;
                        req.flash('error_msg', 'Registration Failed. ' + error.message);
                        res.redirect('/users/register');
                        console.log("Error creating user: ", error);
                    });  
                } else {
                    req.flash('error_msg', 'Registration Failed.');
                    res.redirect('/users/register');
                }

            }, 60000); 

        }, …
Run Code Online (Sandbox Code Playgroud)

javascript node.js firebase firebase-authentication

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

如何在我的Node.js EJS模板中使用jquery?

情况:

我正在尝试为这个问题实现第一个答案(有25个upvotes):我如何制作一个Upvote/Downvote按钮?使用我的Node.js ejs模板.

所以我写了这段代码.


我的代码:

Main.js

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

$('.UpvoteButton').click(function () {
  $(this).toggleClass('on');
});

$('.DownvoteButton').click(function () {
  $(this).toggleClass('on');
});
Run Code Online (Sandbox Code Playgroud)

style.css文件

.UpvoteButton {
    display: inline-block;
    overflow: hidden;
    width: 80px;
    height: 50px;
    margin-top: 15px;
    margin-right: 3px;
    cursor: pointer;
    background: url('/assets/UpvoteButtonSpriteSheet.png');
    background-position: 0 0px;
}

.DownvoteButton {
    display: inline-block;
    overflow: hidden;
    width: 80px;
    height: 50px;
    margin-top: 15px;
    margin-right: 3px;
    cursor: pointer;
    background: url('/assets/DownvoteButtonSpriteSheet.png');
    background-position: 0 0px;
}

.UpvoteButton.on {
  background-position: 0 50px;
}

.DownvoteButton.on {
  background-position: 0 50px;
}
Run Code Online (Sandbox Code Playgroud)

index.ejs

<% include …
Run Code Online (Sandbox Code Playgroud)

javascript css jquery node.js

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

如何在服务器上检查客户端是否经过身份验证?

情况:

目前,我将UID通过url传递给服务器.

然后,我使用UID检查数据库中是否存在该UID:


码:

router.get("/profile/:uid", function(req, res, next){

var uid = req.params.uid;

var userRef = admin.database().ref("users/"+uid);

userRef.once('value', function(snapshot){
    if (snapshot != null) {
Run Code Online (Sandbox Code Playgroud)

问题:

这意味着任何人都可以通过构建网址并将其粘贴到搜索栏并包含该用户的UID来访问任何人的个人资料.


题:

如何在没有此类安全漏洞的情况下检查用户是否在服务器上进行了身份验证?

javascript node.js firebase firebase-authentication firebase-realtime-database

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