質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

2392閲覧

mongoDBの$whereのqueryで、javascriptの変数を渡すことができない

terry-0121

総合スコア12

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2016/09/12 03:41

編集2016/09/12 03:47

###前提・実現したいこと
mongoDBの$whereのqueryで、javascriptの変数を渡すことができない

###発生している問題・エラーメッセージ

node.js+expressでwebアプリを組んでいます。
POST送信でviewのINPUT要素に入っていた値をreq.body.ほにゃららで受け取って
変数profitに格納して、$whereに書きたいです。

以下のように書いたのですが、
('this.price - this.amount > profit' の部分です)
どうやら変数profitの値が渡っていないようです。

正しい方法についてご教示いただければ嬉しいです。

###該当のソースコード

node.js+express

1 2router.post('/', function(req, res, next) { 3 var limit=req.body.limit // 値は25が入っている; 4 var profit=req.body.profit; // 値は1000が入っている 5 6 AmazonDB.$where('this.price - this.amount > profit').sort({'_id':'asc'}).limit(limit).exec(function(err,docs){ 7 if (err) { 8 console.log(err); 9 } 10 res.render('index', { title: 'title', json: docs}); 11 }); 12}); 13

エラーは、
{ [MongoError: ReferenceError: profit is not defined]
name: 'MongoError',
message: 'ReferenceError: profit is not defined',
'$err': 'ReferenceError: profit is not defined',
code: 16722 }
のような感じでnot definedが出ております。

###試したこと
'this.price - this.amount > profit'

'this.price - this.amount > 1000'
と書くと正常にqueryは実行されるため、
記述の仕方に問題があるのかなと考えております。

###補足情報(言語/FW/ツール等のバージョンなど)
node v5.1.0
express 4.13.1
mongo v2.6.11
mongoose 4.5.9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

文字列になってるからでしょうか。

var where = 'this.price - this.amount > ' + profit; AmazonDB.$where(where).sort({'_id':'asc'}).limit(limit).exec(function(err,docs){

投稿2016/09/12 10:08

kodai

総合スコア759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

terry-0121

2016/09/12 12:00 編集

ありがとうございました。できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問