2017-07-26 8 views
0

私はkeystone.jsに新しいモデル 'Product.js'を作成しました。keystone.jsのモデルdbスキーマを更新します

var keystone = require('keystone'); 
var Types = keystone.Field.Types; 

var Product = new keystone.List('Product', { 
    map: {name: 'title'}, 
    singular: 'Product', 
    plural: 'Products', 
    autokey: {path: 'slug', from: 'title', unique: true} 
}); 

Product.add({ 
    title: {type: String, required: true}, 
    price: {type: Number}, 
    qty: { type: Number }, 
    description: {type: Types.Html, wysiwyg: true, height: 300}, 
    image: {type: Types.CloudinaryImage}, 
    publishedDate: {type: Date, default: Date.now} 
}); 

Product.register(); 

これらの属性は、管理UIで表示されます。今、私はそれを更新し、新しい属性を動的に追加したい(このファイル内のものを変更することなく)。ルーティングファイルproduct.jsで、このような既存の属性を埋めるために新しいインスタンス(thisの記事の後)を作成することができます。

keystone.createItems({ 
    Product: [{ 
     title: 'Product 3', 
     price: 34, 
     qty: 4, 
     description: "sldfkjslkfjlskdjfsdfj",  
     __ref: 'prod' 
    }] 
}, function (err, stats) { 
    stats && console.log(stats.message); 
}); 

このような機能があり、製品スキーマを変更することはできますか?

このモデルでは、mongoose dbに新しい属性を追加したいと考えています。どうしたらいいですか? keystone.jsはdbファイルをWindowsにどこに保存しますか?

答えて

0

スキーマは、実行時に変更することを目的としたものではありません。特に、キーストーンでAdmin UIを生成するために使用されます。ここで

はスキーマなしモンゴの使用についての興味深い記事です:ここではMongoDB: To Use Schemas or Not?

は、同様の質問にマングースチームのテイクです:あなたは「スキーマレス」を行くかMixed Typesを使用している場合Dynamically adding fields in the schema doesn't permit to add fields as usual

、キーストーンのかもしれませんスキーマを設計時にビルド時に定義する必要があるため、使用したいプラットフォームではありません。

関連する問題