- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
编辑2
所以我已经尝试过
router.get('/dashboard/users/forms/competition-form/:id', ensureAuthenticated, (req, res, next) => {
CompetitionForm.find(req.params.id, function(err, CompetitionForm){
res.render('dashboard/users/forms/competition-form.hbs', {
pageTitle: 'Competition Form',
user_id: req.params.id
});
});
});
正如 @YouneL 所提到的,我还将我的帖子路由编辑为以下内容
// competition form edit
router.post('/dashboard/users/forms/competition-form/:id', (req, res) => {
var schoolName = req.body.schoolName;
var competitionDate = req.body.competitionDate;
var competitionTime = req.body.competitionTime;
var competitionVenue = req.body.competitionVenue;
var competitionTotalOfStudents = req.body.competitionTotalOfStudents;
var competitionTotalParticipated = req.body.competitionTotalParticipated;
var competitionTotalPersonnel = req.body.competitionTotalPersonnel;
var competitionJudge1Name = req.body.competitionJudge1Name;
var competitionJudge1Telephone = req.body.competitionJudge1Telephone;
var competitionJudge1Email = req.body.competitionJudge1Email;
var competitionJudge2Name = req.body.competitionJudge2Name;
var competitionJudge2Telephone = req.body.competitionJudge2Telephone;
var competitionJudge2Email = req.body.competitionJudge2Email;
var competitionJudge3Name = req.body.competitionJudge3Name;
var competitionJudge3Telephone = req.body.competitionJudge3Telephone;
var competitionJudge3Email = req.body.competitionJudge3Email;
// admin fields
var competitionRequiredPhotos = req.body.competitionRequiredPhotos;
var competitionRequiredCertifications = req.body.competitionRequiredCertification;
console.log(CompetitionForm);
console.log('form successful');
res.redirect('/dashboard');
});
现在,当提交表单时,我会被重定向到仪表板,但是数据库没有更新,应该有一个名为“CompetitionForm”的竞赛表单的新集合
编辑 1
我在发布路线上运行了 console.log(CompetitionForm);
并得到了以下输出。
[nodemon] restarting due to changes...
[nodemon] starting `node app.js hbs, css`
Server is up on port 3000
Connection has been established
Connection has been established
Fri Jan 19 2018 17:15:21 GMT+0000 (GMT): GET /dashboard/users/forms/competition-form/5a5c6740b9e210087e098fd6
Fri Jan 19 2018 17:15:21 GMT+0000 (GMT): GET /users/login
Fri Jan 19 2018 17:15:22 GMT+0000 (GMT): GET /favicon.ico
Fri Jan 19 2018 17:15:29 GMT+0000 (GMT): POST /users/login
Fri Jan 19 2018 17:15:29 GMT+0000 (GMT): GET /users/login
Fri Jan 19 2018 17:15:29 GMT+0000 (GMT): GET /favicon.ico
Fri Jan 19 2018 17:15:34 GMT+0000 (GMT): POST /users/login
Fri Jan 19 2018 17:15:34 GMT+0000 (GMT): GET /dashboard
Fri Jan 19 2018 17:15:34 GMT+0000 (GMT): GET /favicon.ico
Fri Jan 19 2018 17:15:36 GMT+0000 (GMT): GET /dashboard/users/forms/competition-form/5a5c6740b9e210087e098fd6
Fri Jan 19 2018 17:15:37 GMT+0000 (GMT): GET /favicon.ico
Fri Jan 19 2018 17:16:07 GMT+0000 (GMT): POST /dashboard/users/forms/competition-form/5a5c6740b9e210087e098fd6
{ [Function: model]
hooks: Kareem { _pres: {}, _posts: {} },
base:
Mongoose {
connections: [ [NativeConnection] ],
models: { User: [Function], CompetitionForm: [Circular] },
modelSchemas: { User: [Schema], CompetitionForm: [Schema] },
options: { pluralization: true },
plugins: [ [Array], [Array], [Array] ] },
modelName: 'CompetitionForm',
model: [Function: model],
db:
NativeConnection {
base:
Mongoose {
connections: [Array],
models: [Object],
modelSchemas: [Object],
options: [Object],
plugins: [Array] },
collections:
{ users: [NativeCollection],
competitionforms: [NativeCollection] },
models: { User: [Function], CompetitionForm: [Circular] },
config: { autoIndex: true },
replica: false,
hosts: null,
host: 'localhost',
port: 27017,
user: null,
pass: null,
name: 'pol-development',
options: null,
otherDbs: [],
states:
{ '0': 'disconnected',
'1': 'connected',
'2': 'connecting',
'3': 'disconnecting',
'4': 'unauthorized',
'99': 'uninitialized',
disconnected: 0,
connected: 1,
connecting: 2,
disconnecting: 3,
unauthorized: 4,
uninitialized: 99 },
_readyState: 1,
_closeCalled: false,
_hasOpened: true,
_listening: false,
_connectionOptions: {},
_events: { error: [Array] },
_eventsCount: 1,
db:
Db {
domain: null,
_events: [Object],
_eventsCount: 2,
_maxListeners: undefined,
s: [Object],
serverConfig: [Getter],
bufferMaxEntries: [Getter],
databaseName: [Getter] } },
discriminators: undefined,
'$appliedMethods': true,
'$appliedHooks': true,
_events: { init: [Function], save: [Function] },
_eventsCount: 2,
schema:
Schema {
obj:
{ schoolName: [Function: String],
competitionDate: [Function: String],
competitionTime: [Function: String],
competitionVenue: [Function: String],
competitionTotalOfStudents: [Function: Number],
competitionTotalParticipated: [Function: Number],
competitionTotalPersonnel: [Function: Number],
competitionJudge1Name: [Function: String],
competitionJudge1Telephone: [Function: String],
competitionJudge1Email: [Function: String],
competitionJudge2Name: [Function: String],
competitionJudge2Telephone: [Function: String],
competitionJudge2Email: [Function: String],
competitionJudge3Name: [Function: String],
competitionJudge3Telephone: [Function: String],
competitionJudge3Email: [Function: String],
competitionRequiredPhotos: [Function: Boolean],
competitionRequiredCertifications: [Function: Boolean] },
paths:
{ schoolName: [SchemaString],
competitionDate: [SchemaString],
competitionTime: [SchemaString],
competitionVenue: [SchemaString],
competitionTotalOfStudents: [SchemaNumber],
competitionTotalParticipated: [SchemaNumber],
competitionTotalPersonnel: [SchemaNumber],
competitionJudge1Name: [SchemaString],
competitionJudge1Telephone: [SchemaString],
competitionJudge1Email: [SchemaString],
competitionJudge2Name: [SchemaString],
competitionJudge2Telephone: [SchemaString],
competitionJudge2Email: [SchemaString],
competitionJudge3Name: [SchemaString],
competitionJudge3Telephone: [SchemaString],
competitionJudge3Email: [SchemaString],
competitionRequiredPhotos: [SchemaBoolean],
competitionRequiredCertifications: [SchemaBoolean],
_id: [ObjectId],
__v: [SchemaNumber] },
aliases: {},
subpaths: {},
virtuals: { id: [VirtualType] },
singleNestedPaths: {},
nested: {},
inherits: {},
callQueue: [ [Array], [Array], [Array], [Array], [Array], [Array] ],
_indexes: [],
methods: {},
statics: {},
tree:
{ schoolName: [Function: String],
competitionDate: [Function: String],
competitionTime: [Function: String],
competitionVenue: [Function: String],
competitionTotalOfStudents: [Function: Number],
competitionTotalParticipated: [Function: Number],
competitionTotalPersonnel: [Function: Number],
competitionJudge1Name: [Function: String],
competitionJudge1Telephone: [Function: String],
competitionJudge1Email: [Function: String],
competitionJudge2Name: [Function: String],
competitionJudge2Telephone: [Function: String],
competitionJudge2Email: [Function: String],
competitionJudge3Name: [Function: String],
competitionJudge3Telephone: [Function: String],
competitionJudge3Email: [Function: String],
competitionRequiredPhotos: [Function: Boolean],
competitionRequiredCertifications: [Function: Boolean],
_id: [Object],
__v: [Function: Number],
id: [VirtualType] },
query: {},
childSchemas: [],
plugins: [ [Object], [Object], [Object], [Object] ],
s: { hooks: [Kareem], kareemHooks: [Object] },
_userProvidedOptions: undefined,
options:
{ retainKeyOrder: false,
typeKey: 'type',
id: true,
noVirtualId: false,
_id: true,
noId: false,
validateBeforeSave: true,
read: null,
shardKey: null,
autoIndex: null,
minimize: true,
discriminatorKey: '__t',
versionKey: '__v',
capped: false,
bufferCommands: true,
strict: true,
pluralization: true },
'$globalPluginsApplied': true },
collection:
NativeCollection {
collection: Collection { s: [Object] },
opts:
{ bufferCommands: true,
capped: false,
'$wasForceClosed': undefined },
name: 'competitionforms',
collectionName: 'competitionforms',
conn:
NativeConnection {
base: [Mongoose],
collections: [Object],
models: [Object],
config: [Object],
replica: false,
hosts: null,
host: 'localhost',
port: 27017,
user: null,
pass: null,
name: 'pol-development',
options: null,
otherDbs: [],
states: [Object],
_readyState: 1,
_closeCalled: false,
_hasOpened: true,
_listening: false,
_connectionOptions: {},
_events: [Object],
_eventsCount: 1,
db: [Db] },
queue: [],
buffer: false,
emitter:
EventEmitter {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined } },
Query:
{ [Function]
base:
Query {
toConstructor: [Function: toConstructor],
setOptions: [Function],
collection: [Function: collection],
'$where': [Function],
where: [Function],
equals: [Function: equals],
eq: [Function: eq],
or: [Function: or],
nor: [Function: nor],
and: [Function: and],
gt: [Function],
gte: [Function],
lt: [Function],
lte: [Function],
ne: [Function],
in: [Function],
nin: [Function],
all: [Function],
regex: [Function],
size: [Function],
maxDistance: [Function],
minDistance: [Function],
mod: [Function],
exists: [Function],
elemMatch: [Function],
within: [Function: within],
box: [Function],
polygon: [Function],
circle: [Function],
near: [Function: near],
intersects: [Function: intersects],
geometry: [Function: geometry],
select: [Function: select],
slice: [Function],
sort: [Function],
limit: [Function],
skip: [Function],
maxScan: [Function],
batchSize: [Function],
comment: [Function],
maxTime: [Function],
snapshot: [Function],
hint: [Function],
slaveOk: [Function],
read: [Function],
tailable: [Function],
merge: [Function],
find: [Function],
cursor: [Function: cursor],
findOne: [Function],
count: [Function],
distinct: [Function],
update: [Function: update],
updateMany: [Function: updateMany],
updateOne: [Function: updateOne],
replaceOne: [Function: replaceOne],
remove: [Function],
deleteOne: [Function],
deleteMany: [Function],
findOneAndUpdate: [Function],
findOneAndRemove: [Function],
_findAndModify: [Function],
_wrapCallback: [Function],
setTraceFunction: [Function],
exec: [Function: exec],
thunk: [Function],
then: [Function],
stream: [Function],
selected: [Function: selected],
selectedInclusively: [Function: selectedInclusively],
selectedExclusively: [Function: selectedExclusively],
_mergeUpdate: [Function],
_optionsForExec: [Function],
_fieldsForExec: [Function],
_updateForExec: [Function],
_ensurePath: [Function],
_validate: [Function] } },
'$__insertMany': [Function],
insertMany: [Function],
'$init': Promise { [Circular] } }
原创
我正在尝试根据用户 ID 在仪表板中创建一个 NodeJS 表单,但由于某种原因它无法发布。
这是一些代码:
<form action="/dashboard/users/forms/competition-form/{{user.id}}" method="post">
路线
// competition form details
router.get('/dashboard/users/forms/competition-form/:id', ensureAuthenticated, (req, res, next) => {
CompetitionForm.find(req.params.id, function(err, CompetitionForm){
res.render('dashboard/users/forms/competition-form.hbs', {
pageTitle: 'Competition Form',
});
});
});
// competition form edit
router.post('/dashboard/users/forms/competition-form/:id', (req, res) => {
var schoolName = req.body.schoolName;
var competitionDate = req.body.competitionDate;
var competitionTime = req.body.competitionTime;
var competitionVenue = req.body.competitionVenue;
var competitionTotalOfStudents = req.body.competitionTotalOfStudents;
var competitionTotalParticipated = req.body.competitionTotalParticipated;
var competitionTotalPersonnel = req.body.competitionTotalPersonnel;
var competitionJudge1Name = req.body.competitionJudge1Name;
var competitionJudge1Telephone = req.body.competitionJudge1Telephone;
var competitionJudge1Email = req.body.competitionJudge1Email;
var competitionJudge2Name = req.body.competitionJudge2Name;
var competitionJudge2Telephone = req.body.competitionJudge2Telephone;
var competitionJudge2Email = req.body.competitionJudge2Email;
var competitionJudge3Name = req.body.competitionJudge3Name;
var competitionJudge3Telephone = req.body.competitionJudge3Telephone;
var competitionJudge3Email = req.body.competitionJudge3Email;
// admin fields
var competitionRequiredPhotos = req.body.competitionRequiredPhotos;
var competitionRequiredCertifications = req.body.competitionRequiredCertification;
});
我的期望
当用户登录时,他们应该能够填写此表单,该用户属于此表单,因此它基于用户 ID。
不太确定我在这里缺少什么。
最佳答案
您应该更改 View 以便使用路由处理程序传递的 user_id
(即 router.get(...)
),也可以使用 Model.findOneAndUpdate()将发布的数据保存到数据库中:
查看:
<form action="/dashboard/users/forms/competition-form/{{ user_id }}" method="post">
帖子处理程序:
router.post('/dashboard/users/forms/competition-form/:id', (req, res) => {
CompetitionForm.findOneAndUpdate( { _id: req.params.id }, req.body, (err, competition) => {
if (err) {
console.log(`Error saving data: ${err}`);
return res.send('Error saving data');
}
res.redirect('/dashboard');
} );
});
关于html - 无法发布nodejs表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48346074/
我在 mongodb 中的玩家和锦标赛之间存在多对多关系。 我希望能够一次将许多玩家添加到锦标赛中。如果没有 ajax,这很简单,但我们有一个包含数千名玩家的数据库,因此表单选择变得巨大。 我们想为此
这个问题已经有答案了: When should I use html's and when spring's in Spring MVC web app? (3 个回答) 已关闭 6 年前。 我正
我正在 C++ Builder XE4 上使用 VCL。 我有以下组件。 FormMain 具有 TButton *B_select; FormSelect(或DialogSelect)具有 TCom
如何在不影响表单控件的情况下更改表单的 alphablend? 德尔福XE7 最佳答案 此问题的一个解决方案是使用多设备应用程序(如果无法使用VCL)。 如果您需要保留透明的TForm,只需更改属性T
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在尝试扩展 Django 注册以包含我自己的注册表单。原则上这是相当简单的。我只需要编写自己的表单( CustomRegistrationForm ),它是原始表单( RegistrationFo
我正在尝试为我的网站实现聊天功能。为了做到这一点,我遵循了以下教程:https://channels.readthedocs.io/en/latest/tutorial/ 然后我稍微更改了代码以实现它
有一个问题,我需要用一个 html 表单提交两个相互关联的模型表单。我知道如何提交两个单独的表格,但是在相关模型表格的情况下外键让我发疯。 问题是,第二个表单应该用外键填充字段到第一个表单的实例。 在
我正在创建一个工具,允许某人输入食谱,然后将其保存为 XML 文件,我已经创建了 XSD,但我想知道如何在我的网页上制作一个表单以允许用户输入他们的食谱并遵守模式。我一直在研究 Ajax 和 Jque
在 .net win 表单(如 asp.net web 表单)中是否有可用的验证控件? 因为很难为我的每个控件设置正确的条件,所以我的表单中也有很多重复的代码。 正确的做法是什么? 最佳答案 看看这个
我有一个简短的问题。我正在学习如何使用 javascript 制作注册表,发现此链接非常有用。 http://www.w3resource.com/javascript/form/javascript
我正在开发一个项目,该项目将使用循环将许多表单添加到 mysql 数据库中。在 javascript 部分中,我无法让 var i 在函数 updatesum() 中工作。有人可以帮我吗? 我试图避免
在我的应用程序上有一个包含 2 个字段和一个保存按钮的表单。 在我的 onClick 结束时我需要什么来将光标返回到第一个字段。 我有这个来清除它们 txtData.setText("
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
<input type="text" name="textfield" onKeyPress="javascript:alert(event.
我正在构建的网站有一个登录表单,作为所有其他模板扩展的 base.html 模板的一部分;因此,我需要以某种方式处理每个页面上的登录/注销逻辑。 目前每个页面都在单独的 View 中加载,那么实现它的
我有一个表单类,看起来像.. #forms.py class ExampleForm(forms.Form): color = forms.CharField(max_length=25)
有没有办法在表单定义中给表单一个特殊的错误渲染函数?在 customizing-the-error-list-format 下的文档中它展示了如何为表单提供特殊的错误呈现函数,但似乎您必须在实例化表单
我正在处理由多个页面组成的表单,我想解决验证问题。 当我点击提交按钮时,当前页面上的所有字段都会在下方显示错误消息,但是如果我更改页面,那么我需要再次点击提交,因为这些字段未设置为已触摸。 如果我可以
是否可以附加到继承表单的 exclude 或 widgets 变量? 到目前为止,我有以下设置。 class AddPropertyForm(forms.ModelForm): num_mon
我是一名优秀的程序员,十分优秀!