forms-mongoose
forms-mongoose copied to clipboard
does this still work, as in examples?
I have a model like this:
var forms = require('forms-mongoose');
var mongoose = require('mongoose');
var schema = new mongoose.Schema({
"created": {type: Date, default: Date.now, forms: {all:{}}},
"name": {type:String, forms: {all:{}}},
"verified": {type:Boolean, forms: {all:{}}},
"token": {type:String, forms: {all:{}}},
"email": {type:mongoose.SchemaTypes.Email, required:true, forms: {all:{}}},
"website": {type:mongoose.SchemaTypes.Url},
"admin": {type:Boolean, default: false, forms: {all:{}}}
});
schema.statics.createForm = function (extra) {
return forms.create(this, extra);
}
module.exports = mongoose.model('User', schema);
when I run this:
form = forms.create(models.User, 'new');
// or
models.User.createForm('new')
I get this:
{ fields:
{ '0': 'n',
'1': 'e',
'2': 'w',
created:
{ required: undefined,
validators: [Object],
widget: [Object],
parse: [Function],
bind: [Function],
errorHTML: [Function],
labelText: [Function],
labelHTML: [Function],
classes: [Function],
toHTML: [Function],
name: 'created' },
name:
{ required: undefined,
validators: [Object],
widget: [Object],
parse: [Function],
bind: [Function],
errorHTML: [Function],
labelText: [Function],
labelHTML: [Function],
classes: [Function],
toHTML: [Function],
name: 'name' },
verified:
{ required: undefined,
validators: [Object],
widget: [Object],
parse: [Function],
bind: [Function],
errorHTML: [Function],
labelText: [Function],
labelHTML: [Function],
classes: [Function],
toHTML: [Function],
name: 'verified' },
token:
{ required: undefined,
validators: [Object],
widget: [Object],
parse: [Function],
bind: [Function],
errorHTML: [Function],
labelText: [Function],
labelHTML: [Function],
classes: [Function],
toHTML: [Function],
name: 'token' },
email:
{ required: true,
validators: [Object],
widget: [Object],
parse: [Function],
bind: [Function],
errorHTML: [Function],
labelText: [Function],
labelHTML: [Function],
classes: [Function],
toHTML: [Function],
name: 'email' },
admin:
{ required: undefined,
validators: [Object],
widget: [Object],
parse: [Function],
bind: [Function],
errorHTML: [Function],
labelText: [Function],
labelHTML: [Function],
classes: [Function],
toHTML: [Function],
name: 'admin' } },
bind: [Function],
handle: [Function],
toHTML: [Function] }
Note the 'n', 'e', 'w'...
Also, if I run form.toHMTL() I get this:
/Users/konsumer/Desktop/forms/node_modules/forms-mongoose/node_modules/forms/lib/forms.js:108
return html + form.fields[k].toHTML(kname, iterator);
^
TypeError: Object n has no method 'toHTML'
at /Users/konsumer/Desktop/forms/node_modules/forms-mongoose/node_modules/forms/lib/forms.js:108:46
at Array.reduce (native)
at Object.f.toHTML (/Users/konsumer/Desktop/forms/node_modules/forms-mongoose/node_modules/forms/lib/forms.js:106:45)
at Object.<anonymous> (/Users/konsumer/Desktop/forms/app.js:7:19)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
this seems to work:
var form = forms.create(models.User);
for (i in form.fields){
if (form.fields[i].toHTML)
console.log(form.fields[i].toHTML())
}
I get this:
<div class="field"><label for="id_created">Created</label><input type="text" name="created" id="id_created" /></div>
<div class="field"><label for="id_name">Name</label><input type="text" name="name" id="id_name" /></div>
<div class="field"><label for="id_verified">Verified</label><input type="checkbox" name="verified" id="id_verified" value="on" /></div>
<div class="field"><label for="id_token">Token</label><input type="text" name="token" id="id_token" /></div>
<div class="field required"><label for="id_email">Email</label><input type="email" name="email" id="id_email" /></div>
<div class="field"><label for="id_admin">Admin</label><input type="checkbox" name="admin" id="id_admin" value="on" /></div>
on closer inspection, this works, too:
var form = forms.create(models.User);
console.log(form.toHTML())
How can i add classes to the generated elements