Articles of javascript

如果包含反斜杠,则无法读取json属性

我试图从请求访问一个JSON,如: var files = req.files.fileData[0]; // This contains multiple file data // initially it is like [object object] for(var i=0; i<files.length; i++){ var fileDataArr = JSON.stringify(files[i]); console.log("**********fileDataArr : "+fileDataArr); var attachmentId = fileDataArr.name.attachmentId; console.log("id : "+attachmentId); } JSON结构是我得到,而控制台fileDataArr是: {"domain":null,"_events":{},"_eventsCount":0,"size":5056,"path":"C:\\Users\\k7000649\\AppData\\Local\\Temp\\8eb4f7b82b5646cef78f9989bb3353b1","name":"{\"fileName\":\"wiproNewIcon.png\",\"fileType\":\"image/png\",\"attachmentId\":\"99c148f3f5c1\",\"restrictedFileSize\":\"25690112 \"}","type":"image/png","hash":false,"lastModifiedDate":"2017-08-22T11:25:03.380Z","_writeStream":{"_writableState":{"objectMode":false,"highWaterMark":16384,"needDrain":false,"ending":true,"ended":true,"finished":true,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"bufferedRequest":null,"lastBufferedRequest":null,"pendingcb":0,"prefinished":true,"errorEmitted":false,"bufferedRequestCount":0,"corkedRequestsFree":{"next":null,"entry":null}},"writable":false,"domain":null,"_events":{},"_eventsCount":0,"path":"C:\\Users\\k7000649\\AppData\\Local\\Temp\\8eb4f7b82b5646cef78f9989bb3353b1","fd":null,"flags":"w","mode":438,"autoClose":true,"bytesWritten":5056,"closed":true},"length":5056,"filename":"{\"fileName\":\"wiproNewIcon.png\",\"fileType\":\"image/png\",\"attachmentId\":\"99c148f3f5c1\",\"restrictedFileSize\":\"25690112 \"}","mime":"image/png"} 结构是有效的,但反斜杠 我试图parsing的JSON删除反斜杠,但它会引发一个像SyntaxError:意外的令牌o的错误,当我试图从JSON访问任何数据(fileDataArr.name.attachmentId)它会引发一个错误,如: TypeError: Cannot read property 'attachmentId' of undefined at exports.xhr_upload_multi_attachment (D:\Harmony_Trunk\Development\Asset-Editor\build\harmony_development\routes\xhr_upload_attachment.js:122:39) 我尝试用正则expression式replace反斜杠(/ \ […]

在只有nodejs的环境中,在ES6 Module / Class中定义“真正的”私有方法,而不会泄漏任何信息

我知道,没有真正的私人方法INSIDE ES6类。 不过,我正在玩一下,发现了一些好东西 – 也许… 正如我所说,不可能不公开对象的属性。 但是我试图实现一些OOP编程,因为我把我的类分成单独的文件,然后导出这些类,如: class MyClass { constructor() { /** * Initialize stuff… */ } myMethod() { /** * Do public stuff… */ } } // expose class to environment. export default MyClass; 所以我可以导入类: import MyClass from './MyClass.js'; 当然myMethod可以从导入模块的其他文件访问。 Sinced我需要的variables和函数只能由我尝试过的类访问: // private variable outside of class scope but still accessible. let possiblePrivateVariable […]

Autobahn.JS掉线

我有一个Crossbar.js实现,在客户端(网站)和服务器(Node.js)之间通过Crossbar websocket服务器发送数据。 双方都使用Autobahn.JS连接到Crossbar服务器。 连接工作正常,但似乎客户端和服务器断断续续,随机时刻重新连接。 这大约每两分钟发生一次。 我也看到,双方的连接并没有同时发生。 这让我觉得问题在于我在双方使用的Autobahn实现(对于客户端和服务器来说大致相同)。 下面是我用来从Node.js连接到Crossbar服务器的方法。 浏览器的版本几乎完全相同。 我只改变了订阅,并改变了const并letvariablesvar 。 start(connectionConfig) { const self = this; self.host = connectionConfig.host; self.realm = connectionConfig.realm; self.channelPrefix = connectionConfig.channelPrefix; try { // Start an Autobahn websocket connection self.connection = new autobahn.Connection({"url": self.host, "realm": self.realm}); self.connection.onopen = function(session) { // Save session in class self.session = session; // Listen […]

{errorCode:'INVALID_REQUEST_BODY',当试图发送信封

我正在尝试使用模板发送信封。 我使用表单数据来捕获这个调用所需的所有字段。 我创build了下面的对象,然后附加从用户添加值。 然后发送通过JSON.stringify之前发送到http post。 出于某种原因仍然收到错误INVALID_BODY_REQUEST var data = [ { "documents": [ { "documentId": "27730895", "fileExtension": "pdf", "name": "Top Level Staging", "order": "1" } ], "emailSubject": "Please Sign document", "status": "sent", "templateId": "4fda9b93-9c82-4f23-bd06-67f9b35f0183", "templateRoles": [ { "email": "", "name": "", "roleName": "Client", "tabs": { "textTabs": [ { "documentId": "27730895", "pageNumber": "1", "tabLabel": "cPackage", "value": […]

event.target.value对于包装图像而不是文本的button是未定义的

我有两个相同的button,除了里面有一个图像,另一个有文本。 我已经添加了一个onClick事件处理程序。 图像button的event.target.value是未定义的,尽pipe有一个值,文本button具有正确的值。 看这个小提琴的例子: https : //jsfiddle.net/69z2wepo/84885/ class MyComponent extends React.Component { constructor(props) { super(props); this.changeSlide = this.changeSlide.bind(this); } changeSlide(e) { e.preventDefault(); console.log('e.target.value', e.target.value); } render() { return ( <div> <button onClick={this.changeSlide} value="back"> <img src="//www.gravatar.com/avatar/7150a453468d14f599772cd8330fcf25/?default=&s=80" alt="Previous slide" /> </button> <button onClick={this.changeSlide} value="back"> CLICK ME </button> </div> ); } } ReactDOM.render( <MyComponent />, document.getElementById('container') ); 为什么会出现这种情况,在button中使用图像的正确方法是什么?

如何在我的所有请求查询string中包含JSON webtoken

我刚刚学会了如何使用JSON webtoken。 我已经能够在login时生成JSON webtoken,并且还设置了中间件来validation我的令牌并保护JSONvalidation中间件以下的路由。 每次我尝试访问受保护的路由时,都会手动添加令牌: ?token=gwt3r7r….到我的GET请求的末尾。 我知道这不应该是一个真正的应用程序的情况。 我希望这是dynamic完成的。 这如何dynamic地完成?

如何在JavaScript中解构对象时绑定方法?

如何在JavaScript中解构对象时绑定方法? const person = { getName: function() { console.log(this); } }; var a = person.getName; var b = person.getName.bind(person); var {getName: c} = person; person.getName(); //=> {getName: [Function]} a(); //=> window or global b(); //=> {getName: [Function]} c(); //=> window or global 我想要clogin控制台的“父”对象{getName: [Function]} 。 在一个解构行中解构一个对象时,是否有办法绑定所有方法?

mongoose承诺不工作

我的mongoosefunction忽略承诺查询,并立即落下,而不用等待另一个步骤 exports.editProduct = (id, data) => { Product.findById(id) .then((data) => { var imgS3arr = data.img; var tempArr = []; var i = imgS3arr.length while (i–) { if (!imgS3arr[i].match(/https:\/\/s3.eu-central-1.amazonaws.com\/es-shop\//g)) { tempArr.push(imgS3arr[i]) imgS3arr.splice(i, 1) } } return tempArr }) .then((tempArr) => { var tempArrS3 = [] return Promise.all(tempArr.map((img, i) => { return fetch.remote(img).then((base) => { var buf […]

Multer没有看到上传的图像

我想在单个post请求中保存一个图像,这将是用户对MongoDB的头像,还有一些用户使用npm的包的信息叫做multer。 不幸的是,只有我能在控制台中看到的是错误: TypeError: Cannot read property 'path' of undefined register.pug extends layout block content h1 Register form(method='POST', action='/users/register') .form-group label Username: input.form-control(name='firstName', type='text') .form-group label Email: input.form-control(name='lastName', type='text') .form-group label Name: input.form-control(name='email', type='text') .form-group label Password: input.form-control(name='password', type='password') .form-group label Avatar: input.file(name='avatar', id='avatar' type='file') input.btn.btn-primary(type='submit',value='Submit') 注册路线 const upload = multer({ dest: 'uploads/avatars/' }) router.post('/register', upload.single('avatar'), […]

蓝鸟承诺与callback发电机

我如何让蓝鸟自动将.nodeify / .asCallback添加到生成的承诺? 在bluebird中,任何promise实例都可以附加到节点callback机制上: Promise.resolve('foo').asCallback(callback); 然而,有时可能不需要定义承诺本身,而是一种被调用的方法,每次都会返回一个新的承诺,如下所示: // create a new random number promise each time Promise.method((foo, callback) => Math.random()); // create a new random number promise each time using a generator Promise.coroutine(function *(foo, callback) { return Math.random(); }); 在这种情况下,如果我想附加一个callback处理程序的承诺,我不得不这样做“人为地”在最后,使用像这样一个临时的方法: // create a new random number promise each time using a generator Promise.coroutine(function *(foo, callback) { […]