我试图将一个大于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,我在哪里搞砸了?谢谢!
我正在用 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对象发生了变异。
我是 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 处理程序的方法?
我想尝试接收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)
但同样的错误信息仍然存在,我在哪里搞砸了?
我已经克隆了Express.js repo,其中包含一个具有Express.js不同用例的Examples文件夹.我打开了Hello World示例,代码以以下行开头
var express = require('../../');
Run Code Online (Sandbox Code Playgroud)
我理解该文件中的其余代码,但上面的行是我的头脑?我知道require函数用于在项目中包含一个JS模块,一个应该将模块名称作为参数传递给require()函数,但在上述语句的情况下,我们传入一个目录,它将要做什么?