2017-07-02 2 views
0

NodeJSとMongodbを使用します。私はNodeJSによる問い合わせを行い、いくつかの問題を解決するのが難しいと感じました。私はコードを書く場合は

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: $or/$and/$nor entries need to be full objects

jobjに置き換える使用しない:

コードはNodeJS、私は次のエラーを取得する作業機能がとき

function DeleteItem(db, data) { 
 

 
var jobj = "{'Item_ID':1},{'Item_ID':2}"; 
 
    db.collection('P_Item').update(
 
     { 
 
      $and: [{ 'Shop_ID': data.shopid }], 
 
      $or: [jobj] 
 
     }, 
 

 
     { 
 
      $set: { 'Item_Delete': 1 } 
 
     }, 
 

 
     { 
 
      'upsert': false 
 
     } 
 
    ); 
 
    console.log("DeleteItem"); 
 
}
でコマンドクエリを作成しています varオブジェクトその仕事

function DeleteItem(db, data) { 
 

 
    db.collection('P_Item').update(
 
     { 
 
      $and: [{ 'Shop_ID': data.shopid }], 
 
      $or: [{'Item_ID':1},{'Item_ID':2}] 
 
     }, 
 

 
     { 
 
      $set: { 'Item_Delete': 1 } 
 
     }, 
 

 
     { 
 
      'upsert': false 
 
     } 
 
    ); 
 
    console.log("DeleteItem"); 
 
}

しかしjobj意志は数オブジェクトは毎回同じではありませんてしまったので、私は、この方法を使用する必要はありません。

$or:[jobj]をエラーなく使用するにはどうすればよいですか?

ありがとうございました! jobjこの方法を定義することによって

答えて

0

var jobj = "{'Item_ID':1},{'Item_ID':2}";、jobjのタイプはstringになりますが、我々は$orのためのオブジェクトの配列を必要とします。

jobjが文字列でなければならないのであれば、あなたはそれがこのように入力します変更することができます。

db.collection('P_Item').update(
    { 
     $and: [{ 'Shop_ID': data.shopid }], 
     $or: JSON.parse("[" + jobj.replace(/'/g, '"') + "]") 
    }, 

    { 
     $set: { 'Item_Delete': 1 } 
    }, 

    { 
     'upsert': false 
    } 
); 
+0

ニースの仕事! ありがとうございます。 –

関連する問題