Tag: ecmascript 6

使用index.ts导出“默认”

我有以下的项目结构: build/ build.ts config/ config.ts index.ts … config.ts包含一个默认的导出types,如下所示: export default { myProp: { someProp: "someValue" } } 而config/的index.ts如下所示: export * from './config'; 现在我想要像这样在build.ts导入configurationtypes: import config from '../config'; 但是,当使用它(例如与config.myProp ),它告诉我, myProp不存在index.ts 。 根据这里的官方模块文档,这应该工作得很好。 我在这里错过了什么?

映射整个对象数组,而不会影响所有对象字段

我有一个对象的数组,我需要以某种方式parsing。 这些对象具有一组通用字段和一些不存在于所有对象中的可选字段。 为了这个例子, a,b,c是常见的字段, d,e,f是可选的。 我想对某些领域进行一些操作,例如将a和d的值加倍,而把剩下的部分保持原样。 如果某个对象缺less一个或多个可选字段,则应该保留在结果中。 问题是,我想以一种纯粹的function性的方式来做,而不是宣布一个空的数组,并推入它。 示例input: const input = [ { a: 3, b: 'test', c: 34, d: 'example' }, { a: 6, b: 'another', c: 0, e: true, f: () => {} } ]; 预期结果: [ { a: 6, b: 'test', c: 34, d: 'EXAMPLE' }, { a: 12, b: 'another', […]

快递中可变数量的路线参数?

cex.io的RESTful API有一个有趣的路线,可变数量的参数返回给定的所有货币对。 这是如何实现的? 这里是一个伪代码types的例子,我的意思是… app.get('/pairs/:arg1/:arg2/:argn…', function(req, res, next) { // app logic });

如何只更新MongoDB数据库中的对象的一些属性

我的代码下面不允许API用户通过传递一个请求属性来更新只有一个字段。 我可以删除userObj处的null,但UI开发人员必须从数据库传递现有数据来执行更新,这不是最佳做法。 这是我的快车路线: router.put('/user', (req, res) => { const userObj = { name: req.body.name || null, location: { city: req.body.city || null }, phone: req.body.phone || null }; User.updateUser(req.body.id, userObj) }); 这里是我的Mongoose模型的updateUser函数: module.exports.updateUser = (_id, userObj, callback) => { User.findOneAndUpdate({_id}, userObj, { upsert: true, 'new': true }, callback); }

模块导出ECMA6类的最佳实践

在我的nodejs项目广泛使用ECMA 6类,我的问题是关于出口这个类。 例如有两种方法: class MyClass{ constructor(myAttr){this._DB =DB;} someMethod(){DB.save()} } module.exports=Myclass; 第二种方式: class MyClass{ constructor(){} someMethod(obj){var DB =require('DB'); DB.save(obj)} } module.exports=new Myclass(); 首先依靠.js来实例化类并传递variables(DB)。虽然在创buildMyClass的对象时,会有尽可能多的对象创build,因为MyClass中有许多请求正在进入。 然而,MyClass的Class级别属性(在这种情况下是Db)不会被重复。 第二种方法实例化MyClass,但创buildvariablesDB的次数与调用SomeMethod的次数相同。 第三种方法不是那么简洁,就是为DB创build全局variables并使用它: 'use strict' const DB = require('DB') class MyClass{ constructor(){} someMethod(obj){DB.save(obj)} } module.exports=new Myclass(); 我想知道什么方法更适合,以及在什么情况下。 最好的-V

如何解决require(“../../../../../../../”)挫折在NodeJS中?

在node.js中解决这类问题有什么更好的方法? import foo from "../../../modules/home/models/index.js" import bar from "../../../modules/about/models/index.js" import baz from "../../../modules/contact/models/index.js" 至less把它们变成这样的东西? import foo from "/home/models/index.js" import bar from "/about/models/index.js" import baz from "/contact/models/index.js" 有任何想法吗?

ESLint失败npm在基于es6的导入上运行构build

我的server.js看起来像 import express from 'express'; import open from 'open'; import compression from "compression"; const app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); app.get('/users', function (req, res) { // Hard coding for simplicity. Pretend this hits a real database res.json([ {"id": 1, "firstName": "Bob", "lastName": "Smith", "email": "bob@gmail.com"}, {"id": 2, "firstName": "Tammy", "lastName": […]

摩卡更改afterEach超时

我正在用摩卡和柴编写一个节点应用程序。 某些testing调用外部API进行集成testing,这可能需要90秒才能执行此操作。 为了正确清理,我定义了一个afterEach() – 块,它将删除任何生成的远程资源,以防期望失败,并且一些资源没有被删除。 testing本身有一个增加的超时,而其余的testing应保持其默认和小超时: it('should create remote resource', () => {…}).timeout(120000) 然而,我不能用afterEach().timeout(120000)做同样的afterEach().timeout(120000) ,因为这个函数不存在 – 由于未知的资源名称,我也不能使用function () notation: describe('Resources', function () { beforeEach(() => { this._resources = null }) it('should create resources', async () => { this._resources = await createResources() expect(false).to.equal(true) // fail test, so… await deleteResources() // will never be called }) afterEach(async() […]

– Node.js中的和谐标志0.12抛出SyntaxError

所以我写了以下内容: index.js let x = 31 console.log(x) 并试着用–harmony标志进行testing: alex@alex-K43U:~/node/es6$ node –harmony index.js 但是我得到一个错误: /home/alex/node/es6/index.js:1 (function (exports, require, module, __filename, __dirname) { let x = 31 ^ SyntaxError: Illegal let declaration outside extended mode 我究竟做错了什么? 我已经更新到节点0.12.1 。

有条件的完成承诺

我有一个承诺链,我执行一些行动。 当我达成一个特定的陈述时,我想创build一个分支,它可能会继续链,否则,将解决整个即将到来的承诺链。 readFile('example.json').then(function (file) { const entries = EJSON.parse(file); return Promise.each(entries, function (entry) { return Entries.insertSync(entry); }); }).then(function () { if (process.env.NODE_ENV === 'development') { return readFile('fakeUsers.json'); } else { // I am done now. Finish this chain. } }) // conditionally skip these. .then(() => /** … */) .then(() => /** … */) // […]