2016-12-20 10 views
0

別の値から、私は、これはモデル(キーストン・ジェネレータからのデフォルト)
KeystoneJS GETのObjectID

var keystone = require('keystone'); 

/** 
* PostCategory Model 
* ================== 
*/ 

var PostCategory = new keystone.List('PostCategory', { 
    autokey: { from: 'name', path: 'key', unique: true }, 
}); 

PostCategory.add({ 
    name: { type: String, required: true }, 
}); 

PostCategory.relationship({ ref: 'Post', path: 'categories' }); 

PostCategory.register(); 

です(キー)

スラグのパスを使用して、カテゴリからのObjectIDを取得したいですHERESに私はmongoshell

db.getCollection( 'postcategories')から取得する({ "キー": "テスト"})を見つける。

{ 
    "_id" : ObjectId("5853a502455e60d5282d9325"), 
    "key" : "test", 
    "name" : "test", 
    "__v" : 0 
} 

これは、キーが
を動作するかどうかだけで見つけることですが、私はルート

var gc = "test"; 
var c = keystone.list('PostCategory').model.find().where('key').equals(gc); 
c.key = gc; 
console.log(gc ,c.id); 

にこれを使用する場合、ログは、テストが未定義言います。
は私もpostcategoriesを使用しようとしましたが、それはキーストーンは、テストが定義されていない明らかにそれ

答えて

1

ここではkeystone issueからの議論を受け取りましょう。

理由は、find()Promiseを返すため、操作が非同期で実行されるためです。したがって、値を記録した瞬間にはまだundefinedです。

キーストーンデモサイトの約束の例があります(例:here)。私はあなたが何をしたいと思います

のようなものです。また、

var gc = "test"; 
var c = keystone.list('PostCategory').model.find().where('key').equals(gc).exec(function (err, results) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log(results); 
    } 
}); 

または

keystone 
    .list('PostCategory') 
    .model 
    .find() 
    .where('key') 
    .equals(gc) 
    .then(function(category) { 
     console.log(category.id); 
}); 

、私はここではよく分からないが、mongoshellでfind({"key":"test"})作品ならば、それはまた、マングースに働くかもしれませんあなたはkeystone.list('PostCategory').model.find({"key":"test"}).exec(...)を試しましたか?

+0

mongoシェルはうまく動作します。私はそれがキーが働いたかどうかを見つけるためにだけ私は本当に最初の例がうまく動作する他の何かのためにそれを必要としないが、私はまだ2番目の例は、おそらく私は何かを見逃しているように見えないIDを取得する方法がわからない – Bill

+0

IDを抽出することができます。 'results [0] ._ id'最初の結果です。 –

0
var gc = test; ????? 

を認識doesntの言っています。 Javascriptの観点から。 JSは、テストが変数であることを期待しています。その瞬間にDBは何か分からない。

+0

どういう意味ですか?それはキー値です – Bill

+0

私はObjectIDを使用する場合はキーの代わりにObjectIDを使用していますので、キーを使用してObjectIDを取得します – Bill

+0

'test'はJavaScriptに定義されていないため、エラーです。あなたはちょうど引用符でそれを必要としますか? '' test "' –

関連する問題