[解決済み] クエリとは何ですか。url.parse()でnodeJSを使用して、[Object: null prototype]を指定しています。
質問
私は今、自分のプロジェクトのためにnodeJSを学び始めていて、まだnodeJSのやり方に適応しているところです。 私の質問は、クエリが何を意味するのかです。url.parse(request.url, true)にアクセスする際に.queryメソッドにアクセスすると、 [Object: null prototype]と表示されるのはどういう意味ですか? 私は少し混乱しています。私はちょうど私が見ているビデオチュートリアルを試してみたいのですが、私はエラーを持っているので、キャッチアップすることはできません。助けてくれてありがとうございます。
以下は私のコードです。
const http = require('http');
const url = require('url');
const port = 8080;
const server = http.createServer();
server.on('request', (request, response) => {
const urlParsed = url.parse(request.url, true);
console.log(urlParsed);
if (request.method === 'GET' && request.pathname === '/metadata') {
const { id } = urlParsed.query;
console.log(id) <<<<<<<<<<<<<<<< I cannot output this in the CLI
}
});
server.listen(port, () => {
console.log(`Server is listening to localhost:${ port }`)
});
では
curl http://localhost:8080/metadata/?id=1
次にCLIで出力
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?id=1',
query: [Object: null prototype] { id: '1' },
pathname: '/metadata/',
path: '/metadata/?id=1',
href: '/metadata/?id=1'
}
解決方法は?
これはつまり
query
プロパティが指すオブジェクトは
null
プロトタイプを使用します。プロトタイプは、javascriptが継承のために使用するメカニズムで、実際にはプロパティアクセスの委譲です。つまり、ここでは
query
オブジェクトは何のプロパティも継承せず、特に
Object.prototype
.
空白のオブジェクトをコンソールロギングすると、同様の出力が得られます。
null
プロトタイプを使用します。
var object = Object.create(null)
console.log(object)
// output: [Object: null prototype] {}
このとき
parseQueryString
の2番目のパラメータである
url.parse()
が真であれば、クエリオブジェクトを取得するために
querystring
モジュール
parse()
メソッドを使用します。実はこのメソッドについて、ドキュメントではこのように指定されています。
が返すオブジェクトは
querystring.parse()
メソッドは、プロトタイプ的にはJavaScriptの
Object
.
https://nodejs.org/api/querystring.html#querystring_querystring_parse_str_sep_eq_options
関連
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み】module.exports "モジュールが定義されていません"
-
[解決済み] NodeJSの使用中にError: listen EADDRINUSEを修正する方法は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] 変数を使用してオブジェクトのプロパティに動的にアクセスする
-
[解決済み] 内蔵DOMメソッドやPrototypeを使ってHTML文字列から新しいDOM要素を作成する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする