Articles of node.js

通过_idfindmongoose

我有一个简单的findById与mongoose的麻烦。 确认该项目存在于数据库中 db.getCollection('stories').find({_id:'572f16439c0d3ffe0bc084a4'}) mongoose Story.findById(topic.storyId, function(err, res) { logger.info("res", res); assert.isNotNull(res); }); 不会find它。 我也尝试转换到mongoId,仍然无法find(即使mongoose应该为你做这个) var mid = mongoose.Types.ObjectId(storyId); let story = await Story.findOne({_id: mid}).exec(); 我实际上是用这个打字稿,所以等待。 我也尝试了Story.findById(id)方法,仍然无法find。 是否有一些简单的_id字段查找项目? _id必须在Schema中吗? (文档说不) 我可以通过架构中的其他值find,只是_id不能使用… 更新:我写了一个简短的testing。 describe("StoryConvert", function() { it("should read a list of topics", async function test() { let topics = await Topic.find({}); for (let i = 0; i […]

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。 提前致谢。

使用Multer将图像上传到Express

我正在尝试将图像上传到Express服务器。 我不完全确定如何做到这一点,但是我从我能从MDN拿到的东西中得到了什么, express , react-dropzone multer react-dropzone和multer文档。 Multer似乎没有从react-dropzone拿起FormData对象,注销req.file它返回undefined。 server.js var storage = multer.diskStorage({ destination: './public/users', filename: function (req, file, cb) { switch (file.mimetype) { case 'image/jpeg': ext = '.jpeg'; break; case 'image/png': ext = '.png'; break; } cb(null, file.originalname + ext); } }); var upload = multer({storage: storage}); app.use(upload.single('photo')); app.post('/uploadUserImage', function (req, res) { console.log(JSON.stringify(req.body.photo)) […]

mongoose – this.find()不存在

在我的模型中,我试图做一个静态的getUserByToken方法。 但是,如果我像文档中那样做的话,我就可以了 this.find is not a function 我的代码如下所示: 'use strict'; const mongoose = require('mongoose'); const Schema = mongoose.Schema; const schema = new Schema({ mail: { type: String, required: true, validate: { validator: (mail) => { return /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[az][az])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i.test(mail); } } }, birthDate: { type: Date, required: true, max: Date.now, min: new Date('1896-06-30') }, password: { type: […]

是node.js与reactjs作为PHP模板渲染服务一个好主意?

我的网站是用PHP编写的。 Node.js也是为socket.io设置的。 我一直在考虑使用Reactjs进行服务器端渲染,以便重用视图。 计划使用v8js扩展,但是后来我遇到了这篇文章谈论两个可能的解决scheme: 1.使用v8js扩展和React-PHP-V8Js 2.从php发送数据到node.js来渲染视图,例如: 的node.js require("babel/register"); var React = require('react'); var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json()); app.use('/', function(req, res) { try { var view = path.resolve('./views/' + req.query.module); var component = require(view); var props = req.body || null; res.status(200).send( React.renderToString( React.createElement(component, props) […]

修改生成器函数原型

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的原型,我可以随时编辑…或者有吗? 有一个更好的方法吗?

如何遍历所有文件,并支持暂停和继续

我创build了一个NodeJS(电子)代码来读取特定目录和子目录中的所有文件。 我不想使用太多的高清资源,为什么我在文件夹之间使用5ms的延迟。 现在我的问题。 我想如果我的NODE进程停止? 我希望能够从停止时继续。 我该怎么做? 换句话说:如何在所有的文件和文件夹中行走时保持当前状态的索引,所以我可以继续从停止的遍历。 谢谢 我的代码: var walkAll=function(options){ var x=0 walk(options.dir,function(){}) function walk(dir,callback) { var files=fs.readdirSync(dir); var stat; async.eachSeries(files,function(file,next){ file=dir +'/' + file if (dir.match(/Recycle/)) return next() if (dir.match(/.git/)) return next() if (dir.match(/node_modules/)) return next() fs.lstat(file,function(err,stat){ if(err) return next() if(stat.mode==41398) return next() if (stat.isDirectory()) { setTimeout(function(file){ walk(file,next) }.bind(null,file),5) } else{ x++ if(false […]

Intellij NodeJs 6.4.0意外的令牌导出

我正在使用Intellij Idea在ES6中创build一个NodeJs应用程序。 我的node.exe版本是版本6.4.0 我创build了一个简单的类: //wNodeClasses.js 'use strict'; export class wsUrl { constructor() {} } 我将模块导入到另一个文件中: require('../../../Root/Libs/Waldata/wsNodeClasses'); 当我启动应用程序,我总是得到错误: d:\Dev\webDev\Root\Libs\Waldata\wsNodeClasses.js:11 export class wsUrl ^^^^^^ SyntaxError: Unexpected token export at Object.exports.runInThisContext (vm.js:76:16) 我不使用任何转译器,我想写“纯ES6代码”(我不想使用Babel或任何等价物) 我明白,NodeJs 6.4.0可以直接解释ES6代码 这是我的Node.Exe命令行: -max-old-space-size = 8192 –expose_debug_as = v8debug 我是一个新手,我想我错过了一些明显的东西,我search了一下,我没有find答案

在瀑布内节点asynchronous并行

我在Nodejs中构build一个服务器来从某个数据库检索数据。 我已经使用了asynchronous库了一段时间了,并想出了一些东西,例如把一个瀑布放在一个并行函数中。 我偶然发现了一个问题,我首先需要执行一个查询,然后在可以同时执行的其他查询中使用该查询的结果。 代码看起来像这样: async.waterfall([ function(callback) { connection.query( query, function(err, rows, fields) { if (!err) { callback(null,rows); } else { callback(null,"SORRY"); } } ); }, async.parallel([ function(resultFromWaterfall,callback) { connection.query(query, function(err, rows, fields) { if (!err) { callback(null,rows); } else { callback(null,"SORRY"); } } ); }, function(resultFromWaterfall,callback) { connection.query(query, function(err, rows, fields) { if (!err) { […]