小编seg*_*ter的帖子

为什么Array.prototype.reduce()没有将空数组作为累加器?

我试图将一个大于10的数组中的所有元素过滤到一个新数组.我故意不使用,Array.prototype.filter()因为我想学习这个reduce()方法.这是我正在玩的代码

var collection = [3, 5, 11, 23, 1];

// fileter all the elements bigger than 10 to a new array

var output = collection.reduce(function(filteredArr, collectionElemet) {
  if (collectionElemet > 10) {
    return filteredArr.push(collectionElemet);
  }
}, []);
Run Code Online (Sandbox Code Playgroud)

我期望filteredArr在第一次回调执行时使用空数组初始化,因为这里提供了许多示例.但是当我运行这段代码时,我得到了错误 Cannot read property 'push' of undefined,我在哪里搞砸了?谢谢!

javascript arrays reduce

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

为什么 mongodb node.js 驱动程序的 insertOne 方法会改变要插入的对象?

我正在用 node 学习 mongodb,我在玩下面的代码

var assert = require('assert')
var url = 'mongodb://localhost:27017/learnyoumongo'
var client = require('mongodb').MongoClient

var doc = {
  firstName: 'Steve',
  lastName: 'Smith'
}
console.log(doc)  //logs as expected
client.connect(url, (err, db) => {
  assert.equal(err, null)
  var docs = db.collection('docs')
  docs.insertOne(doc, (err, result) => {
    assert.equal(err, null)
    console.log(doc)  //logs with an extra property i.e. _id
    db.close()
  })
})
Run Code Online (Sandbox Code Playgroud)

我很惊讶地看到它doc被 mongo 改变了,看看检查这两个console.log语句的输出。为什么doc对象发生了变异。

javascript mongodb node.js

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

如何在 Node.js 中导出 mongo 数据库处理程序?

我是 Node 和 Mongo 的新手,我试图在一个文件中连接到 mongo 数据库并将数据库处理程序导出到许多其他文件,这样我就不需要在需要连接的所有文件中连接到数据库。这是我尝试这样做的方法

// db.js
var client = require('mongodb').MongoClient
var assert = require('assert')
var url = 'mongodb://localhost:27017/test'

client.connect(url, (err, db) => {
  assert.equal(err, null)
  module.exports = db
})
Run Code Online (Sandbox Code Playgroud)

导出 db 处理程序后,我尝试在另一个文件中访问它的方法,如下所示

var db = require('./db')
console.log(db.collection('col'))
Run Code Online (Sandbox Code Playgroud)

但它抛出一个 TypeError,说这db.collection不是一个函数。如何访问其他文件中 db 处理程序的方法?

mongodb commonjs node.js

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

如何处理"未处理"错误'事件'错误 - NodeJS

我想尝试接收Node.js. 这是我正在玩的非常简单的代码

var http = require('http');
http.get('www.google.com', function(res) {
  console.log(res.statusCode);
});
Run Code Online (Sandbox Code Playgroud)

运行此代码时出现以下错误

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: connect ECONNREFUSED 127.0.0.1:80
    at Object.exports._errnoException (util.js:837:11)
    at exports._exceptionWithHostPort (util.js:860:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1060:14)
Run Code Online (Sandbox Code Playgroud)

在读取错误输出时,我添加了两行代码来处理错误事件,如下所示

var http = require('http');
http.get('www.google.com', function(res) {
  console.log(res.statusCode);
  res.on('error', function(error) {
    console.error(error);
  });
});
Run Code Online (Sandbox Code Playgroud)

但同样的错误信息仍然存在,我在哪里搞砸了?

javascript http node.js

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

如果我们将目录位置传递给Node.js require函数会发生什么?

我已经克隆了Express.js repo,其中包含一个具有Express.js不同用例的Examples文件夹.我打开了Hello World示例,代码以以下行开头

var express = require('../../');
Run Code Online (Sandbox Code Playgroud)

我理解该文件中的其余代码,但上面的行是我的头脑?我知道require函数用于在项目中包含一个JS模块,一个应该将模块名称作为参数传递给require()函数,但在上述语句的情况下,我们传入一个目录,它将要做什么?

javascript node.js express

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

标签 统计

javascript ×4

node.js ×4

mongodb ×2

arrays ×1

commonjs ×1

express ×1

http ×1

reduce ×1