クラス内のメソッドでコンストラクタに初期化した数値を使いたいのですが、
上手くメソッドで使われていません。
nameが定義されていません。
とエラーが出てしまいます
クラスの扱いに慣れていないので、書き方が間違っているのでしょうか?
js
1let MongoClient = require('mongodb').MongoClient; 2let url = "mongodb://localhost:27017/"; 3module.exports = class Mongo{ 4 5 constructor(name,password){ 6 this.name = name ; 7 this.password = password ; 8 } 9 10 registration(){ 11 MongoClient.connect(url,{ useNewUrlParser: true }, function(err, db) { 12 if (err) throw err; 13 let dbo = db.db("mydb"); 14 let myobj = {name : this.name, password : this.password } ; 15 dbo.collection("students").insertOne(myobj, function(err, res) { 16 if (err) throw err; 17 console.log("Number of documents inserted: " + res.insertedCount); 18 db.close(); 19 }); 20 }); 21 return true ; 22 }
↑のregistrationでコンストラクタのnameとpasswordを使いたいのですが使えません
js
1let fs = require("fs") ; 2const Mongo= require("./mongo.js"); 3 4function handler(req,res){ 5 fs.readFile(__dirname+"/index.html",function(err,data){ 6 if(err){ 7 res.writeHead(500); 8 return res.end("Error"); 9 } 10 res.writeHead(200); 11 res.write(data); 12 res.end(); 13 }); 14} 15 16let app = require("http").createServer(handler).listen(3000); 17console.log("server start!"); 18 19let io = require("socket.io").listen(app) ; 20 21io.sockets.on("connection",function(socket){ 22 socket.on("emit_data",function(data){ 23 console.log(data) ; 24 25// 登録ページ、ログインページ 26 let regist = new Mongo(data.name,data.password) ; 27 28 if(regist.registration()){ 29 socket.emit("data_from_server","あなたの名前は「" + 30 regist.name + "」です。" + "あなたのpasswordは「" + 31 regist.password + "」です。") ; 32 } 33 }); 34}); 35
↑恐らく、初期化は上手くいっているとは思います
クライアントからのnameとpassをmongodbのデータベースに送っているのですが、
ソケットを使ってサーバー側に送ると、サーバーコンソールにエラー文が出ます
内容は、
motegiyuuta-no-MacBook-Air:js_template motegiyuta$ node socket.js
server start!
{ name: 'dddddd', password: '123445' }
/Users/motegiyuta/node_modules/mongodb/lib/operations/mongo_client_ops.js:466
throw err;
^
TypeError: Cannot read property 'name' of undefined
at /Users/motegiyuta/Desktop/js_template/mongo.js:14:32
at result (/Users/motegiyuta/node_modules/mongodb/lib/utils.js:414:17)
at executeCallback (/Users/motegiyuta/node_modules/mongodb/lib/utils.js:40
6:9)
at err (/Users/motegiyuta/node_modules/mongodb/lib/operations/mongo_client
_ops.js:286:5)
at connectCallback (/Users/motegiyuta/node_modules/mongodb/lib/operations/
mongo_client_ops.js:241:5)
です。
1つめのjsコードの
let myobj = {name : this.name, password : this.password } ;
でエラーがおきています
回答1件
あなたの回答
tips
プレビュー