我正在尝试设计一个场景,在特定事件被触发时,我想让一些听众执行一些任务.试图管理代码的SRP,我希望将侦听器放在不同的源文件中.我想知道使用事件Emitter是否可行.事件发射器只能在单个源文件上工作吗?
var events = require('events');
var em = new events.EventEmitter();
exports.saveScheme = function (req, res) {
var dal = dalFactory.createDAL(constants.SCHEME);
return new Promise.resolve(dal.PromiseSave(req.body))
.then(function(data){
var schemeId = data._id;
em.addListener('FirstEvent', function (data) {
console.log('First subscriber: ' + data);
});
em.emit('FirstEvent', 'Test event emitter');
}).catch(function(error){
console.log(error);
});
};
Run Code Online (Sandbox Code Playgroud)
我的其他源文件是
var emitter = require('events').EventEmitter;
var em = new emitter();
//Subscribe FirstEvent
em.on('FirstEvent', function (data) {
console.log('First subscriber: ' + data);
});
Run Code Online (Sandbox Code Playgroud) 我在使用Sinon存根基类方法时遇到了问题.在下面的示例中,我将对基类方法GetMyDetails的调用存根如下.我相信有更好的方法.
actor = sinon.stub(student.__proto__.__proto__,"GetMyDetails");
Run Code Online (Sandbox Code Playgroud)
而且这个价值也是最重要的.
我在javascript中创建了一个简单的类
"use strict";
class Actor {
constructor(userName, role) {
this.UserName = userName;
this.Role = role;
}
GetMyDetails(query,projection,populate,callback) {
let dal = dalFactory.createDAL(this.Role);
dal.PromiseFindOneWithProjectionAndPopulate(query, projection, populate).then(function (data) {
callback(null,data);
}).catch(function (error) {
routesLogger.logError(this.Role, "GetMyDetails", error);
return callback(error);
})
}
}
module.exports = Actor;
Run Code Online (Sandbox Code Playgroud)
现在我有一个扩展了Actor.js的子类
"use strict";
class student extends Actor{
constructor(username, role) {
super(username, role);
this.UserName = username;
this.Role = role;
}
GetMyDetails(callback) {
let query = {'username': this.UserName};
let projection = {};
let populateQuery = …Run Code Online (Sandbox Code Playgroud) 打字稿新手.我正在从RabbitMQ通道读取一些数据并将其转换为JSON对象.在这一行我得到错误
let communicationInformation = JSON.parse(newCommunication.content);
TS2345:"缓冲区"类型的参数不能分配给"字符串"类型的参数.
我需要投射数据吗?我正在使用Typescript 2.4.1
Amqplib.connect(amqpLibUrl, (err, connection) => {
if (!err) {
connection.createChannel((err, channel) => {
channel.consume('QueueName', newCommunication => {
if (newCommunication != null) {
let communicationInformation = JSON.parse(newCommunication.content);
// Code
}
})
})
}
});
Run Code Online (Sandbox Code Playgroud) 在尝试编译我的打字稿源代码时,我看到编译器也在尝试编译我的 node_modules 文件夹下的类型。我正在使用 typescript 2.6.1,我的 tsconfig 文件如下
{
"compilerOptions": {
"allowSyntheticDefaultImports":true,
"outDir": "./dist",
"mapRoot": "./dist",
"module": "commonjs",
"target": "es6",
"sourceMap": true,
"sourceRoot": "./source",
"removeComments": false
},
"exclude": [
"node_modules",
"test"
],
"include": [
"source/*.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
当我运行以下命令“tsc -w -p tsconfig.json”时,出现以下错误
node_modules/@types/es6-promise/index.d.ts(11,15): error TS2300: Duplicate identifier 'Promise'.
Run Code Online (Sandbox Code Playgroud) 我正在使用最新版本的 nodemailer 版本 4.1.0。我尝试使用此处提供的示例代码 https://nodemailer.com/smtp/
这是我的代码
let transporter = nodemailer.createTransport({
host: 'smtp.zoho.com',
port:587,
secure: false,
auth: {
user: this.user,
pass: this.password
}
});
var mailOptions: nodemailer.SendMailOptions = {
from: ****@***.com,
to: test@abc.com,
subject: 'Hello ?',
text: 'Hello world ?',
html: '<b>Hello world ?</b>'
};
transporter
.sendMail(mailOptions)
.then(
(info) => {
// console.log(info);
resolve({status: info.messageId})
}
)
.catch(err => {
// console.log(err);
reject({status: err.toString()})
})
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。我已将安全标志设置为 false,并且还使用了 ignodeTLS。nodemailer 0.7.1 之前的版本没有任何问题。我是否错过了任何特定配置?
{ Error: Invalid login: 530 Must issue a STARTTLS command first. …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取在服务器中上传的文件的mime类型。
.xlsx和.docx文件的mime类型来自application / zip。我试图解压缩文件并读取类型为“ _rels / .rels”的文件。我的疑问是,在读取此特定文件时,读取文件应保留的最大大小应该是多少?如果目标是“ xl / workbook.xml”,我可以假定它的类型是xlsx吗?
我的代码如下
file, fileHeader, err := r.FormFile("file")
buffer := make([]byte, 512)
_, err = file.Read(buffer)
if err != nil {
fmt.Println(err)
}
contentType := http.DetectContentType(buffer)
if contentType == "application/zip" {
r, err := zip.NewReader(file, fileHeader.Size)
if err != nil {
fmt.Println(err)
}
for _, zf := range r.File {
if zf.Name == "_rels/.rels" {
fmt.Println("rels")
rc, err := zf.Open()
if err != nil {
fmt.Println("Rels errors")
}
const BufferSize = 1000 …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算每个地区的学生人数。我有一个看起来像的模型
var mongoose = require('mongoose');
var schema = mongoose.Schema;
var studentSchema = new mongoose.Schema(
{
"name":String,
"address" :{
"locality":String
}
});
module.exports = mongoose.model('Student', studentSchema);
Run Code Online (Sandbox Code Playgroud)
然后我有一些Node.js代码
var Student = require('../../../models/Student');
module.exports.getStudentsBasedOnLocality = function(){
var o = {};
o.map = function () {
emit(Student.address.locality, 1)
}
o.reduce = function (k, vals) {
return vals.length
}
Student.collection.mapReduce(o, function (err, results) {
if(err) throw err;
console.log(results)
})
};
Run Code Online (Sandbox Code Playgroud)
我得到的错误是。关于我可能做错了什么的任何提示?
类型错误:
Cannot read property 'out' of undefined
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Mongo 中存储实体的位置。我似乎只在输入的几个位置遇到问题。我得到的错误是
MongoError:无法提取地理键:无法将几何投影到球形 CRS:[26.1633829, 91.78194759999997]。索引有问题吗?我正在研究 mongodb 3.4 版
我的架构如下
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var modelSchema = new mongoose.Schema({
email: {type: String, lowercase: true},
username: {type: String, unique: true, lowercase: true, index: true},
branchName: String,
address: {
address1: String,
address2: String,
locality: String,
pinCode: Number,
sublocality_level_2: String,
sublocality_level_1: String,
localityName: String,
administrative_area_level_2: String,
administrative_area_level_1: String,
country: String,
postal_code: String,
geo: {
type: [Number],
index: '2dsphere'
}
},
branchPAN: String,
branchType: String,
});
module.exports = mongoose.model('SampleModel', modelSchema);
Run Code Online (Sandbox Code Playgroud) node.js ×6
mongodb ×2
mongoose ×2
typescript ×2
ecmascript-6 ×1
eventemitter ×1
geospatial ×1
go ×1
mapreduce ×1
mime-types ×1
mocha.js ×1
nodemailer ×1
npm ×1
npm-scripts ×1
nvm ×1
sinon ×1
tdd ×1
tsconfig ×1
windows-10 ×1
zoho ×1