javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

Node.js:如何将流读入缓冲区?

我写了一个非常简单的函数,可以从给定的URL下载图像,调整图像大小并上传到S3(使用'gm'和'knox'),我不知道我是否在正确地将流读取到缓冲区中 。 (一切正常,但这是正确的方法吗?)

另外,我想了解一些有关事件循环的知识,如何知道该函数的一次调用不会泄漏任何内容,也不会将'buf'变量更改为另一个已经运行的调用(否则这种情况是不可能的,因为回调是匿名的 功能?)

var http = require('http');
var https = require('https');
var s3 = require('./s3');
var gm = require('gm');

module.exports.processImageUrl = function(imageUrl, filename, callback) {
var client = http;
if (imageUrl.substr(0, 5) == 'https') { client = https; }

client.get(imageUrl, function(res) {
    if (res.statusCode != 200) {
        return callback(new Error('HTTP Response code ' + res.statusCode));
    }

    gm(res)
        .geometry(1024, 768, '>')
        .stream('jpg', function(err, stdout, stderr) {
            if (!err) {
                var buf = new Buffer(0);
                stdout.on('data', function(d) {
                    buf = Buffer.concat([buf, d]);
                });

                stdout.on('end', function() {
                    var headers = {
                        'Content-Length': buf.length
                        , 'Content-Type': 'Image/jpeg'
                        , 'x-amz-acl': 'public-read'
                    };

                    s3.putBuffer(buf, '/img/d/' + filename + '.jpg', headers, function(err, res) {
                        if(err) {
                            return callback(err);
                        } else {
                            return callback(null, res.client._httpMessage.url);
                        }
                    });
                });
            } else {
                callback(err);
            }
        });
    }).on('error', function(err) {
        callback(err);
    });
};
trans by 2020-08-06T19:42:13Z

node.js-MongoDB + nodejs:如何查询ISODate字段?

我正在使用nodejs与node-mongodb-native驱动程序([http://mongodb.github.io/node-mongodb-native/)。]

我有日期属性存储为ISODate类型的文档。

通过nodejs,我正在使用以下查询:

db.collection("log").find({
    localHitDate: { 
            '$gte': '2013-12-12T16:00:00.000Z',
            '$lt': '2013-12-12T18:00:00.000Z' 
    }
})

它什么也不返回。 为了使其正常工作,我需要执行以下操作:

db.collection("log").find({
    localHitDate: {
            '$gte': ISODate('2013-12-12T16:00:00.000Z'),
            '$lt': ISODate('2013-12-12T18:00:00.000Z')
    }
})

但是ISODate在我的nodejs代码中无法识别。

那么如何通过我的nodejs程序对mongo日期字段进行查询?

谢谢

trans by 2020-08-06T16:30:43Z

javascript-Redis作为数据库

我想将Redis用作数据库,而不是缓存。 从我的(有限的)理解来看,Redis是一个内存中的数据存储。 使用Redis有什么风险,如何减轻它们?

trans by 2020-08-06T12:50:04Z

node.js-在sails.js中创建配置变量?

我正在将我的一个应用程序从Express转换为sails.js-是否可以在Sails中执行类似的操作?

从我在Express中的app.js文件中:

var globals = {
    name: 'projectName',
    author: 'authorName'
};

app.get('/', function (req, res) {
    globals.page_title = 'Home';
    res.render('index', globals);
});

这使我可以在每个视图上访问这些变量,而不必将其硬编码到模板中。 虽然不确定在Sails中如何/在哪里做。

trans by 2020-08-06T10:15:14Z

JavaScript-猫鼬查找/更新子文档

我的文件夹文件夹有以下架构:

var permissionSchema = new Schema({
    role: { type: String },
    create_folders: { type: Boolean },
    create_contents: { type: Boolean }
});

var folderSchema = new Schema({
    name: { type: string },
    permissions: [ permissionSchema ]
});

因此,对于每个页面,我可以拥有许多权限。 在CMS中,有一个面板,其中列出了所有文件夹及其权限。 管理员可以编辑一个权限并保存。

我可以很容易地用其权限数组保存整个Folder文档,其中只修改了一个权限。 但是我不想保存所有文档(实际架构中包含更多字段),所以我这样做了:

savePermission: function (folderId, permission, callback) {
    Folder.findOne({ _id: folderId }, function (err, data) {
        var perm = _.findWhere(data.permissions, { _id: permission._id });                

        _.extend(perm, permission);

        data.markModified("permissions");
        data.save(callback);
    });
}

但是问题是烫发总是不确定的! 我试图以这种方式“静态地”获取许可:

var perm = data.permissions[0];

而且效果很好,所以问题在于Underscore库无法查询权限数组。 因此,我想有一种更好的方法(和工作方式)来获取所提取文档的子文档。

任何想法?

附注:我解决了使用“ for”循环检查data.permission数组中的每个项目并检查data.permissions [i] ._ id == Permission._id的问题,但是我想要一个更聪明的解决方案,我知道有一个解决方案!

trans by 2020-08-06T04:57:18Z

javascript-如何有效检查变量是数组还是对象(在NodeJS和V8中)?

在NodeJS和V8中,有什么方法可以有效地检查变量是Object还是Array?

我正在为MongoDB和NodeJS编写模型,并遍历对象树,我需要知道对象是简单对象(数字,字符串,...)还是复合对象(哈希,数组)。

似乎V8具有快速内置的Array.isArray,但是如何检查object是否为Object? 我的意思是像哈希{}或类的实例这样的复杂对象,而不像new String()这样的东西?

通常可以这样做:

Object.prototype.toString.call(object) == "[object Object]"

或这个:

object === Object(object)

但是,这种操作似乎并不便宜,也许有一些更有效的方法? 如果它不是通用的并且不能在所有引擎上都可以,那是可以的,我只需要在V8上即可。

trans by 2020-08-06T02:41:29Z

node.js-Angular js和Express js之间的基本区别和相似之处是什么?

所以我对Angular js vs Express js的目标有些困惑。 根据我的理解,我们使用Node.js来提供Angular js的服务,但是我们并不完全受限于或被迫使用Node.js来提供服务。 另一方面,Express js似乎完成了与更传统的MVC框架类似的任务。

那么Angular Js是一种非特定于服务器的MVC框架吗? 这是否限制了Angular js后端服务器功能或易用性?

trans by 2020-08-06T00:29:11Z

node.js-使用Fetch APi时如何设置请求标头的内容类型

我正在使用npm'isomorphic-fetch'发送请求。 我遇到的问题是我无法设置请求标头的内容类型。

我将内容类型设置为application / json,但是请求标头被设置为text / plain。

import 'isomorphic-fetch';

  sendRequest(url, method, body) {
    const options = {
      method: method,
      headers:{'content-type': 'application/json'},
      mode: 'no-cors'
    };

    options.body = JSON.stringify(body);

    return fetch(url, options);
  }

当我在浏览器中检查请求时,内容类型为o:

content-type:text/plain;charset=UTF-8

谁能解释为什么我无法设置此属性?

trans by 2020-08-06T00:06:44Z

node.js-不允许POST请求-405不允许-nginx,即使包含标头

我在尝试在应用程序中执行POST请求时遇到问题,我进行了很多搜索,但找不到解决方案。

因此,我有一个nodeJS应用程序和一个网站,并且尝试使用此网站中的表单进行POST请求,但我总是这样做:

enter image description here

在控制台中,我看到:

    Uncaught TypeError: Cannot read property 'value' of null 
Post "http://name.github.io/APP-example/file.html " not allowed

在这行代码中:

file.html:

<form id="add_Emails" method ="POST" action="">

    <textarea rows="5" cols="50" name="email">Put the emails here...
    </textarea>

        <p>
        <INPUT type="submit" onclick="sendInvitation()" name='sendInvitationButton' value ='Send Invitation'/>
        </p>


</form>

<script src="scripts/file.js"></script>

file.js:

function sendInvitation(){

    var teammateEmail= document.getElementById("email").value;

我读了很多帖子和跨域文档,但是没有用。研究资料1:[http://enable-cors.org/server.html]研究资料2:[http://www.w3.org/TR/2013/CR-cors-20130129/#http-access-control-max-age]

我现在在做什么:

我正在尝试从服务器的其他域POST:

POST请求:[http://name.github.io/APP-example/file.html],github存储库

POST LISTENER:“ [http://xxx.xxx.x.xx:9000 / email],服务器本地主机(x->我的IP地址)

因此,我在其他文件中也遇到了同样的问题,但我修复了此问题,并将此代码放在每个路由的开头:

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

var router = express.Router(); 
var sessionOBJ = require('./session');

var teams = {} 
var teamPlayers = []

router.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Methods", "PUT, GET,POST");
  next();
 });

然后我就解决了

现在,我遇到了同样的问题,但是在此文件中,唯一的区别是我处理SMTP和电子邮件,因此我发布了一封电子邮件,并向POST请求中收到的该电子邮件发送了一封电子邮件。

该代码在POSTMAN上完全可以正常工作,因此,当我在POSTMAN上进行测试时,它可以正常工作并且可以发布。

我在下面包含了此代码,而不是我显示的第一个代码,但它不能正常运行:

router.all('*', function(req, res, next){
            res.header("Access-Control-Allow-Origin", "*")
            res.header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
            res.header("Access-Control-Allow-Headers", "Origin, Content-Type, Accept")
            res.header("Access-Control-Max-Age", "1728000")
            next();
        });

有人知道如何解决吗?

谢谢。

trans by 2020-08-05T17:35:42Z

如何从一个文件中获取变量到node.js中的另一个文件

这是我的第一个文件:

var self=this;
var config ={
    'confvar':'configval'
};

我想要这个配置变量在另一个文件中,所以我在另一个文件中所做的是:

conf = require('./conf');
    url=conf.config.confvar;

但这给我一个错误。

TypeError: Cannot read property 'confvar' of undefined

请提出我该怎么办?

trans by 2020-08-05T02:44:13Z

为什么将Node.js命名为Node.js?

我很好奇为什么Node.js如此命名。 我搜索了他们的网站和他们的FAQ,没有什么可以帮助我理解为什么它被命名为Node.js。

trans by 2020-08-04T16:12:48Z

回调-Node.js从fs.readFileSync()到fs.readFile()

我正在努力使自己在Node.js中实现同步与异步,尤其是在读取html文件时。

在请求处理程序中,可以使用的同步版本如下:

var fs = require("fs");
var filename = "./index.html";
var buf = fs.readFileSync(filename, "utf8");

function start(resp) {
    resp.writeHead(200, {"Content-type":"text/html"});
    resp.write(buf);
    resp.end();
    }

exports.start=start; 
  1. 使用readFile()的版本是什么?
  2. 我了解readFile是异步的,因此理论上我应该等待 在呈现文件之前先读取整个文件,所以我应该介绍一下 一个addListener? 我可能会混淆其他事情。

编辑:我试图重构这样的代码:

var fs = require("fs");
var filename = "./index.html";
function start (resp) {
    resp.writeHead(200, {"Content-Type":"text/html"});
    fs.readFile(filename, "utf8", function (err, data) {
        if (err) throw err;
        resp.write(data);
        });
    resp.end();
    }

我得到一个空白页,我想这是因为它应该等待所有数据都已读取,然后再resp.write(data),我该如何发信号呢?

trans by 2020-08-04T15:52:12Z

open-JavaScrip中的原型OO

TL; DR:

我们是否需要原型OO中的工厂/构造函数? 我们可以进行范例切换并将其完全删除吗?

背景故事:

最近,我一直在用JavaScript进行原型OO,这发现用JavaScript完成的OO中有99%都在强迫使用经典的OO模式。

我对原型OO的看法是,它涉及两件事。 方法(和静态数据)的静态原型以及数据绑定。 我们不需要工厂或构造函数。

在JavaScript中,这些是包含函数和{}的对象常量。

这意味着我们可以将所有内容建模为静态蓝图/原型和数据绑定抽象,最好将其直接链接到文档样式的数据库中。 即 从数据库中取出对象并通过使用数据克隆原型来创建对象。 这意味着没有构造函数逻辑,没有工厂,没有{}

示例代码:

伪示例为:

var Entity = Object.create(EventEmitter, {
    addComponent: {
        value: function _addComponent(component) {
            if (this[component.type] !== undefined) {
                this.removeComponent(this[component.type]);
            }

            _.each(_.functions(component), (function _bind(f) {
                component[f] = component[f].bind(this);
            }).bind(this));

            component.bindEvents();

            Object.defineProperty(this, component.type, {
                value: component,
                configurable: true
            });

            this.emit("component:add", this, component);
        }
    },
    removeComponent: {
        value: function _removeComponent(component) {
            component = component.type || component;

            delete this[component];

            this.emit("component:remove", this, component);
        }
    }
}

var entity = Object.create(Entity, toProperties(jsonStore.get(id)))

次要说明:

特定的代码是冗长的,因为ES5是冗长的。 上面的{}是一个蓝图/原型。 任何具有数据的实际对象都将使用Object.hasOwnProperty创建。

实际数据(在本例中为组件)直接从JSON存储中加载,并直接注入{}调用中。 当然,将类似的模式应用于创建组件,并且仅将通过Object.hasOwnProperty的属性存储在数据库中。

首次创建实体时,会创建一个空的{}

实际问题:

现在我的实际问题是

  • JS原型OO的开源示例?
  • 这是一个好主意吗?
  • 它与典型的OOP背后的思想和观念一致吗?
  • 会不会使用任何构造函数/工厂函数在某个地方咬我屁股? 我们真的可以不使用构造函数而摆脱困境吗? 使用上述方法是否有任何局限性,我们需要工厂来克服它们。
trans by 2020-08-03T17:28:58Z

node.js-使babel排除测试文件

在构建步骤中,我使用babel将代码转换为es5(从srcdist)。 如何排除以.test.js结尾的文件?

package.json

"scripts": {
  "build": "babel src --out-dir dist",

.babelrc

{
  "presets": [ "es2015" ],
  "ignore": "\\.test\\.js"
}
trans by 2020-08-03T15:13:42Z

javascript-Axios Http客户端-如何使用表单参数构造Http Post URL

我正在尝试使用一些要设置的表单参数创建一个postHTTP请求。 我在节点服务器上使用axios。 我已经有一个构造URL的Java代码实现,如下所示:

JAVA代码:

HttpPost post = new HttpPost(UriBuilder.fromUri (getProperty("authServerUrl"))
            .path(TOKEN_ACCESS_PATH).build(getProperty("realm")));

List<NameValuePair> formParams = new ArrayList<NameValuePair>();

formParams.add(new NameValuePair("username",getProperty ("username")));
formParams.add(new NameValuePair("password",getProperty ("password")));
formParams.add(new NameValuePair("client_id, "user-client"));

我正在尝试在axios中做同样的事情。

值得实现:

axios.post(authServerUrl +token_access_path,
        {
                username: 'abcd', //gave the values directly for testing
                password: '1235!',
                client_id: 'user-client'
        }).then(function(response) {
            console.log(response); //no output rendered
        }

在邮寄请求上设置这些表格参数的方法是否正确?

trans by 2020-08-02T22:56:33Z

node.js-SyntaxError:在严格模式下使用const?

我正在尝试使用selenium-webdriver登录facebook.com。

var webdriver = require('selenium-webdriver'),
    By = require('selenium-webdriver').By,
    until = require('selenium-webdriver').until;

var driver = new webdriver.Builder()
    .forBrowser('firefox')
    .build();

driver.get('https://www.facebook.com/login');
driver.findElement(By.id('email')).sendKeys('****');
driver.findElement(By.id('pass')).sendKeys('*****');
driver.findElement(By.id('loginbutton')).click();

driver.findElement(By.linkText('Settings')).then(function(element) {
  console.log('Yes, found the element');
}, function(error) {
  console.log('The element was not found, as expected');
});
driver.quit();

它给出了错误:

protractor --version

protractor --version v0.10.37

protractor --version1.4.28

protractor --version版本3.2.2

selenium-Web driver@2.53.1

trans by 2020-08-02T13:11:20Z

Javascript-箭头函数是否比v8中的普通独立函数声明更快(性能更高,更轻巧)?

我问这个问题是因为我和我的同事在编码风格上存在争议,因为他更喜欢箭头函数声明:

const sum = (a, b) => a + b;

我更喜欢老式的独立函数声明:

function sum(a, b) {
    return a + b;
}

我的观点是,老式代码更具可读性,并且您可以更清楚地区分函数和变量声明。 他的观点是带有箭头功能的代码运行得更快。

当您使用老式的独立函数声明而不是箭头函数时,您是否对实际的性能损失有所了解(在v8中)? 那处罚真的存在吗?

trans by 2020-08-01T23:54:43Z

node.js-如何通过homeb安装LTS版本的nodejs

当我运行brew install node时,它将安装v6.7.0 Current,但我想要的是LTS版本,即撰写本文时的v4.6.0 LTS。我需要发出哪些命令来通过Homebrew安装Node的LTS版本。

trans by 2020-08-01T20:24:26Z

node.js-Bower:安装后“未找到命令”

我执行which npm时似乎得到以下提示

/usr/local/share/npm/bin/bower -> /usr/local/share/npm/lib/node_modules/bower/bin/bower
bower@0.8.6 /usr/local/share/npm/lib/node_modules/bower

不幸的是,执行任何Bower命令都会返回which npm

which npm返回/usr/local/bin/npm,运行which node返回/usr/local/bin/node

trans by 2020-08-01T16:20:06Z

node.js-在Travis CI上运行grunt build命令

我正在使用Travis CI来测试和构建我的项目,作为它的一部分,我希望travis运行script: "./node_modules/grunt/grunt.js build",我尝试了以下操作,但是没有运气。

  • script: "./node_modules/grunt/grunt.js build"
  • script: "./node_modules/grunt/grunt.js build"
  • script: "./node_modules/grunt/grunt.js build"
  • script: "./node_modules/grunt/grunt.js build"
trans by 2020-08-01T08:37:29Z

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共174页