I hereby claim:
- I am JedWatson on github.
- I am jedwatson (https://keybase.io/jedwatson) on keybase.
- I have a public key whose fingerprint is 75DB 2419 8E41 BF37 4E39 88F9 5D4F 4D18 EF37 8B10
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
| var MyComponent = React.createComponent({ | |
| render () { | |
| return <div style={{ color: 'blue' }}>Hello World</div>; | |
| }); | |
| var page = React.renderComponentToStringAndCSS(MyComponent); | |
| // value of page: | |
| page = { | |
| html: '<div className="__a" data-reactid=".abc" data-react-checksum="123" data-react-classname="__a">Hello World</div>', |
| <Flick settings={...}> | |
| {velocityDelta => | |
| <Spring | |
| currentVelocity={currentVelocity => velocityDelta === 0 ? currentVelocity : | |
| increase(currentVelocity, velocityDelta) | |
| } | |
| endValue={...}> | |
| {currentValues => <div />} | |
| </Spring> | |
| } |
| var doQuery = function() { | |
| // passing an object to async.parallel will cause it to collect their results | |
| // and provide them to the callback in an object with the same keys. | |
| async.parallel({ | |
| // functions are passed a callback with the standard argument pattern of fn(err, result) | |
| count: count.exec, | |
| query: query.exec | |
| }, function(err, results) { |
| var transform = function(contents, doneTransform) { | |
| var authExpiry = 60 * 60 * 1000, | |
| authId = uuid.v4(), | |
| authKey = 'file:auth:' + authId; | |
| redis.client.set(authKey, JSON.stringify({ | |
| userId: req.user.id | |
| })); | |
| redis.client.expire(authKey, authExpiry); |
| import React, { Component, PropTypes } from 'react'; | |
| import { Link } from 'react-router'; | |
| | |
| import useSheet from 'react-jss'; | |
| | |
| import CloudinaryImage from './CloudinaryImage'; | |
| | |
| const Author = ({image, name}, {theme}) => { | |
| const classes = useSheet(stylesheet, theme); | |
| const { authorKey, bio, id, image, name, summary, urlPath } = this.props; |
| keystone.init({ | |
| ...options | |
| }); | |
| var S3Storage = require('keystone-storage-s3'); | |
| keystone.addStorage('s3bucket1', S3Storage, { | |
| key: 'my key', | |
| bucket: 'keystone-stuff', | |
| secret: 'abracadabra', |
| { fieldname: 'file', | |
| originalname: 'Advanced example.md', | |
| name: '1458848e82f2de780e5ad963d93606aa.md', | |
| encoding: '7bit', | |
| mimetype: 'text/markdown', | |
| path: '/var/folders/ck/y02pffhs31xd_k4xc9xmn3hw0000gn/T/1458848e82f2de780e5ad963d93606aa.md', | |
| extension: 'md', | |
| size: 7703, | |
| truncated: false, | |
| buffer: null } } |
Keystone's createItems function is a simple but powerful way to populate your database with data.
It can be used to create test fixtures or initialise your database with default content / users / etc.
There's also a shorthand syntax that can be used within update files; if you are using the auto updates feature, any file that exports a create object will automatically be wrapped and the data will be created.
createItems takes two passes at the data it is passed, first creating the items and retaining references by key (if provided) that can be used to populate relationships in the second pass. This makes it easy to create related data without asynchronous nesting (which for data creation sometimes ends up in knots).
We're currently working on making it easier to add new field types to KeystoneJS as plugins.
In the meantime, if you'd like to work on your own field type, hopefully this guide will point you in the right direction.
Keystone fields require the following:
{fieldType}.js file in ./lib/fieldTypes that controls the field and encapsulates options support, underscore functions, validation and updating{fieldType}.js file needs to be included by ./lib/fieldTypes/index.js