我在keystone.js中创建了一个新模型'Product.js'。
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();
我在管理员界面看到了这些属性。现在我想更新它并动态添加一个新属性(不更改此文件中的任何内容)。在路由文件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在windows中存储db文件在哪里?
答案 0 :(得分:0)
架构不应在运行时进行修改,尤其是在Keystone中用于生成管理UI的方式。
这是一篇关于在没有架构的情况下使用Mongo的有趣文章:MongoDB: To Use Schemas or Not?
以下是mongoose团队对类似问题的看法:Dynamically adding fields in the schema doesn't permit to add fields as usual
如果你要“无模式”或使用Mixed Types,Keystone可能不是你想要使用的平台,因为它需要在构建时通过设计定义模式。