Articles of javascript

简单的方法来增加任何更新查询的Mongoose文档版本?

我想开始利用Mongoose文档版本控制(__v key)。 我有一个问题,实际上增加版本的价值,然后我发现你必须添加this.increment()执行查询时。 有没有办法自动递增? 现在,我只是把它添加到前置中间件中进行更新types的查询: module.exports = Mongoose => { const Schema = Mongoose.Schema const modelSchema = new Schema( { name: Schema.Types.String, description: Schema.Types.String } ) // Any middleware that needs to be fired off for any/all update-type queries _.forEach( [ 'save', 'update', 'findOneAndUpdate' ], query => { // Increment the Mongoose (__v)ersion for any […]

无法使用“下划线”来使用parsing服务器

我刚刚迁移了一个分析服务器,除云代码之外,一切正常。 我已经了解到,这是因为在我的main.js中,我需要库“Underscore”。 这是我的云代码function: Parse.Cloud.define("ReadyUp", function(request, response) { var _ = require('underscore'); var fbid = request.user.get("fbid"); var query = new Parse.Query("Spel"); query.equalTo("lobby", fbid); query.find().then(function(results) { _.each(results, function(spel) { spel.addUnique("ready", fbid); }); return Parse.Object.saveAll(results); }).then(function(result) { response.success(result); }, function(error) { response.error(error); }); }); 代码在迁移之前没有任何错误。 我猜测的要求没有find正确的文件夹。 给你文件夹结构看起来像这样: Cloudcode位置:mainfolder-> cloud-> main.js 下划线库:mainfolder-> node_modules->下划线(文件夹) 代码是错误的还是文件夹的结构有问题? 提前致谢! /马丁

如何更新es6数组中的元素?

我有一个对象的数组,我想修改对象的属性。 我知道我们可以使用拼接function删除对象。是唯一的选项删除并添加回来?

Selenium&webdriver.io如何使用executeScript?

我试图用Selenium,W​​ebDriver.io和Node.js(用Mocha)来testing一个简单的表单。 所以我有这样的东西: var webdriverio = require('webdriverio'); var expect = require('expect'); describe('Test form', function(){ beforeEach(function() { browser.url('/'); }); it('should save object', function() { expect(browser.executeScript('return window.data;')).to.be([]); }); afterEach(function() { if (this.currentTest.state !== "passed") { browser.saveScreenshot(); } }); }); 我的wdio.conf.js : var selenium = require('selenium-standalone'); var seleniumServer; exports.config = { host: '127.0.0.1', port: 4444, specs: [ 'test/*.spec.js' ], […]

检查是否在节点运行程序时给出ARGV

在节点上运行程序时: node test.js 如何在运行node test.js –example时检查程序是否被赋予ARGV node test.js –example ? 我到目前为止所尝试的是以下内容: function say(input){ console.log(input); } if(process.argv[1] !== '') { say('false'); } else { say('success'); } if(process.argv[1] === null) { say('false'); } else { say('success'); } 然而,第一个解决scheme不会输出else ,第二个解决scheme只输出NUL is not defined这样NUL is not defined所以我在想我在编码时犯了一些错误?

承诺解决后调用函数,但Jasmine不通过testing。 为什么?

我的应用程序使用一个服务,返回一个通常依赖于一大堆其他承诺的承诺。 我已经将这个重构成单独的命名函数,使testing(和可读性)更容易。 所以在这种情况下,我只想testing一下run函数是否完成了它的工作并调用其他函数。 例如 run() { return myService .connection .then(this.namedFunction1) .then(this.namedFunction2) .then(this.namedFunction3) .catch((error) => { console.log("doh!", error.stack); }); 当我testingnamedFunction1被称为茉莉花失败时,尽pipe事实并非如此。 下面是我为保持简单而编写的一个小代码示例: getString() { return Promise.resolve("Heeeelp. Heeeelp!!"); } printToConsole(string) { console.log(string); // This works! but Jasmine says nay 🙁 } myFunction() { this.getString() .then(this.printToConsole) .catch((error) => { console.log("Some error occurred", error); }); } …和testing: it("should call the […]

readFileSync不是一个函数

嗨,我是相对较新的节点js和环顾四周,但无法find解决scheme。 我没有检查require JavaScript文件,它似乎没有“readFileSync”的方法。 也许我没有一个正确的需求文件? 我很难find这个文件,到处都在讨论这个文件,但是大多数人没有发布到哪里去。 我安装了节点js并具有require.js文件。 我目前的代码是这样的: fs = require(['require'], function (foo) { //foo is now loaded. }); console.log("\n *STARTING* \n"); // Get content from file var contents = fs.readFileSync("sliderImages", 'utf8'); 我刚开始有点需要工作,但似乎加载了需要的javacscript文件。 我一直在跟随指南,我不知道为什么我得到这个错误: Uncaught TypeError:fs.​​readFileSync不是一个函数 我已经尝试了许多固定的,似乎无法找出这一个。 任何帮助是极大的赞赏。 谢谢。

string匹配的Javascript

我想要@符号后面的字符,直到空格字符。 例如。 如果我的string像hello @world. some gibberish.@stackoverflow hello @world. some gibberish.@stackoverflow 。 然后我想获得angular色的“世界”和“计算器”。 这是我一直在尝试。 var comment = 'hello @world. some gibberish.@stackoverflow'; var indices = []; for (var i = 0; i < comment.length; i++) { if (comment[i] === "@") { indices.push(i); for (var j = 0; j <= i; j++){ startIndex.push(comment[j]); } } } 我可以得到@和空格的出现,然后修剪该部分以获得我的内容,但是我希望有一个更好的解决scheme/build议,没有REGEX。 提前致谢。

修改生成器函数原型

TL; DR 我想修改一个生成器函数实例的原型 – 也就是从调用function*返回的对象。 假设我有一个生成器函数: function* thing(n){ while(–n>=0) yield n; } 然后,我做一个实例: let four = thing(4); 我想定义一个叫做exhaust的发电机原型,就像这样: four.exhaust(item => console.log(item)); 这将产生: 3 2 1 0 我可以通过这样做来破解它: (function*(){})().constructor.prototype.exhaust = function(callback){ let ret = this.next(); while(!ret.done){ callback(ret.value); ret = this.next(); } } 然而, (function*(){})().constructor.prototype.exhaust似乎非常…哈克。 没有GeneratorFunction的原型,我可以随时编辑…或者有吗? 有一个更好的方法吗?

asynchronous等待或承诺不返回stream事件

我有以下函数返回一个Promise函数参数是一个asynchronous函数: createObjectFrom(record) { const self = this; return new Promise(async (resolve, reject) => { let obj = {}; for(let i = 0, l = self.opts.transformers.length; i < l; i++) { let transformer = self.opts.transformers[i]; const headerIndex = findIndex(self.headers, (header) => { return header === transformer.column; }); let csvValue = record[headerIndex]; const lookUp = transformer.options.lookUp; const […]