javascript – 将默认值设置为节点js中的mongoose数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 将默认值设置为节点js中的mongoose数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2717字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 将默认值设置为节点js中的mongoose数组](/upload/InfoBanner/zyjiaocheng/753/f036429d68fb4d2d94ca6bb6c221d2b1.jpg)
在我的模型定义中,我有:
appFeatures: [{
name: String,
param : [{
name : String,
value : String
}]
}]
我想将默认值设置为appFeatures,例如:
名称:’功能’,
param:[{name:’param1′,value:’1′},{name:’param2′,value:’2′}]
我试着这样做
appFeatures : { type : Array , "default" : ... }
但它不起作用,任何想法?
谢谢
解决方法:
Mongoose允许您“分离”模式定义.两者都用于一般的“重用”和清晰的代码.所以更好的方法是:
// general imports
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
// schema for params
var paramSchema = new Schema({
"name": { "type": String, "default": "something" },
"value": { "type": String, "default": "something" }
});
// schema for features
var featureSchema = new Schema({
"name": { "type": String, "default": "something" }
"params": [paramSchema]
});
var appSchema = new Schema({
"appFeatures": [featureSchema]
});
// Export something - or whatever you like
module.export.App = mongoose.model( "App", appSchema );
因此,如果您愿意将“模式”定义作为单个模块的一部分并使用“require”系统根据需要导入,那么它就是“干净”和“可重用”.如果您不想“模块化”所有内容,您甚至可以从“模型”对象“内省”模式定义.
但大多数情况下,它允许您为默认值清楚地指定“您想要的”.
对于更复杂的默认通道,您可能希望在“预保存”挂钩中执行此操作.作为一个更完整的例子:
var async = require('async'),
mongoose = require('mongoose'),
Schema = mongoose.Schema;
var paramSchema = new Schema({
"name": { "type": String, "default": "something" },
"value": { "type": String, "default": "something" }
});
var featureSchema = new Schema({
"name": { "type": String, "default": "something" },
"params": [paramSchema]
});
var appSchema = new Schema({
"appFeatures": [featureSchema]
});
appSchema.pre("save",function(next) {
if ( !this.appFeatures || this.appFeatures.length == 0 ) {
this.appFeatures = [];
this.appFeatures.push({
"name": "something",
"params": []
})
}
this.appFeatures.forEach(function(feature) {
if ( !feature.params || feature.params.length == 0 ) {
feature.params = [];
feature.params.push(
{ "name": "a", "value": "A" },
{ "name": "b", "value": "B" }
);
}
});
next();
});
var App = mongoose.model( 'App', appSchema );
mongoose.connect('mongodb://localhost/test');
async.series(
[
function(callback) {
App.remove({},function(err,res) {
if (err) throw err;
callback(err,res);
});
},
function(callback) {
var app = new App();
app.save(function(err,doc) {
if (err) throw err;
console.log(
JSON.stringify( doc, undefined, 4 )
);
callback()
});
},
function(callback) {
App.find({},function(err,docs) {
if (err) throw err;
console.log(
JSON.stringify( docs, undefined, 4 )
);
callback();
});
}
],
function(err) {
if (err) throw err;
console.log("done");
mongoose.disconnect();
}
);
您可以清理它并内省模式路径以获取其他级别的默认值.但是你基本上想说如果没有定义那个内部数组,那么你将填写编码的默认值.
内容总结
以上是互联网集市为您收集整理的javascript – 将默认值设置为节点js中的mongoose数组全部内容,希望文章能够帮你解决javascript – 将默认值设置为节点js中的mongoose数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。