使用处理关系的MVC框架时定义外键有什么好处?
我正在使用一个关系数据库,其框架允许模型定义与关系.因为外键是通过模型定义的,所以外键似乎是多余的.在开发中管理应用程序的数据库时,编辑/删除使用外键的表是一件麻烦事.
通过完全放弃使用外键,使用外键是否有任何优势?
这是我的RequestList.vue
组件
<template>
<ion-item v-for="request in requests" @click="showRequest(request)" :key="request.id"
text-wrap>
<ion-label>
<b>Name:</b> {{ request.event.name }}
<br>
<b>Venue:</b>{{ request.event.venue.name }}
<br>
<b>Date:</b> {{ request.event.date }}
</ion-label>
</ion-item>
</template>
<script>
import {useRouter} from 'vue-router'
import {IonItem, IonLabel} from '@ionic/vue'
import store from '@/store';
export default {
components: {
IonLabel,
IonItem
},
props: {
requests: Array
},
setup(props) {
const router = useRouter()
const showRequest= (request)=> {
console.log('request', props.request);
store.requests.setRequest(props.requests);
};
return {router, showRequest}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我的store/modules/requests.js
档案
import {computed, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试强制用户进行选择,而不是仅仅使用第一个字段.如何在不使用javascript的情况下阻止用户提交此表单?
<select required>
<option >Make a selection</option>
<option value="saab">Saab</option>
<option value="vw">VW</option>
<option value="audi">Audi</option>
</select>
Run Code Online (Sandbox Code Playgroud) 我有一个组件作为DOM渲染的一部分安装.应用程序的框架是
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>
<div id="app">
<my-component></my-component>
<button>press this button to reload the component</button>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
<my-component>
功能(它显示一些表单输入)和$emit
数据到父.
有没有办法重新安装它?目标是让组件内容和设置好像它是第一次渲染(包括重置data()
保持其状态的元素).
有一些解决方案,但他们都假设重写data()
,我想避免.
我的理解是一个组件是在渲染过程中在dom中正确注入的HTML/CSS/JS代码,因此我担心"重新安装"它的概念不存在 - 我只是想在去之前确保data() - 重写方式.
我正在尝试将我的JSON文件导入我的Firebase,但它一直给我这个错误.我不知道为什么不允许导入这个JSON文件,因为JSONLint说它是一个有效的JSON文件.
这是文件:
{
"Featured" : {
"artist" : "james turell",
"artistEPK" : "artistsownepk.pdf",
"author" : "john queue author",
"date" : "7/28/2016",
"fullScreenImg" : "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687",
"linksToMedia" : [ "www.wallplay.com/project-name/james-t/press.html" ],
"linksToPress" : [ "" ],
"location" : "10 Main Street",
"mainImg" : "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687",
"pressImgs" : [ "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687", "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687", "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687" ],
"pressRelease" : "projectpressrelease.pdf",
"projectImgs" : [ "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687", "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687", "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687" ],
"projectSubheader" : "subheader of project",
"projectTitle" : "title of project",
"projectURL" : "",
"soundFile" : [ ],
"text" : "here there …
Run Code Online (Sandbox Code Playgroud) 我遇到了 Vue 3(alpha 4)的问题:
在setup()
函数内部,我试图读取父组件。根据https://vue-composition-api-rfc.netlify.com/api.html#setup上的文档, 它应该通过context
参数公开父级,作为 context.attrs 的属性或直接作为父级(参见SetupContext
位在“打字”下)。我没有发现文档是否很清楚parent
应该直接从SetupContext
或通过访问SetupContext.attrs
,所以我尝试了两种方法,但都无济于事。
这是我的问题,我可以在记录它们时很好地访问SetupContext
和SetupContext.attrs
(这是一个代理)。SetupContext.attrs
公开通常的代理属性([[Handler]]
,[[Target]]
和[[IsRevoked]]
),并在检查[[Target]]
时清楚地显示父属性。
但是,在记录父级时,它只是打印出未定义:
export default {
setup(props, context) {
console.log(context);
// Output: {attrs: Proxy, slots: Proxy, emit: ƒ}
console.log(context.attrs);
// Output: Proxy {vnode: {…}, parent: {…}, appContext: {…}, type: {…}, root: {…}, …}
console.log(context.attrs.parent);
// Output: undefined
}
};
Run Code Online (Sandbox Code Playgroud)
传播上下文会产生相同的结果:
export default { …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个小项目,我正在使用codeigniter php框架,但发现它对我的目的来说有点太臃肿了.
基本上我想要使数据库交互,会话和验证更简单.MVC也不错.
我正在寻找的东西有10个PHP文件顶部.当我在一个大多数html网站上添加一些PHP功能时,像CodeIgniter这样的东西就不合适了.
有什么建议 ?
编辑:
我不是在寻找模板引擎.Kohona比必要的要大一些(对我来说 - 为了我的目的).
我遇到了elf-php,有没有人使用过它?看起来它看起来像我正在寻找的必需品和一些体面的文档.但这只是一种印象.
我很难告诉Fari-MVC在没有玩弄它的情况下做了什么.我可以浏览代码并查看注释,但我没有找到更多的文档.
我想通过函数处理查询中的一行,我将该行作为结构传递.
理想情况下...
<cfloop query="myquery">
#myfunction(#row#)#
</cfloop>
Run Code Online (Sandbox Code Playgroud)
我也可以像这样设置它......
<cfloop query="myquery">
#myfunction(#col1#,#col2#,#col3#,#col4#)#
</cfloop>
Run Code Online (Sandbox Code Playgroud)
但我不想.我找不到一个简单的提取行的方法,但我想我会问.
考虑到写入速度,我应该将对象存储在数组中还是存储在最重要的对象中?
我正在尝试决定是将数据存储为对象数组,还是在 mongodb 文档中使用嵌套对象。
在这种特殊情况下,我会跟踪我添加和更新的一组不断更新的文件,文件名充当键以及文件中处理的行数。
该文件看起来像这样
{
t_id:1220,
some-other-info: {}, // there's other info here not updated frequently
files: {
log1-txt: {filename:"log1.txt",numlines:233,filesize:19928},
log2-txt: {filename:"log2.txt",numlines:2,filesize:843}
}
}
Run Code Online (Sandbox Code Playgroud)
或这个
{
t_id:1220,
some-other-info: {},
files:[
{filename:"log1.txt",numlines:233,filesize:19928},
{filename:"log2.txt",numlines:2,filesize:843}
]
}
Run Code Online (Sandbox Code Playgroud)
我假设处理一个文档,尤其是涉及到更新的时候,处理对象更容易,因为对象的位置可以通过名称来确定;与数组不同,在数组中我必须查看每个对象的值,直到找到匹配项。
因为对象键会有句点,我需要转换(或删除)句点以创建有效的键(fi.le.log
tofilelog
或fi-le-log
)。我不担心文件可能出现的重复名称(例如fi.le.log
和fi-le.log
),所以我更喜欢使用对象,因为文件数量相对较少,但更新频繁。
或者最好在单独的集合中处理这些数据以获得最佳写入性能......
{
"_id": ObjectId('56d9f1202d777d9806000003'),"t_id": "1220","filename": "log1.txt","filesize": 1843,"numlines": 554
},
{
"_id": ObjectId('56d9f1392d777d9806000004'),"t_id": "1220","filename": "log2.txt","filesize": 5231,"numlines": 3027
}
Run Code Online (Sandbox Code Playgroud) vue.js ×2
vuejs3 ×2
cfloop ×1
coldfusion ×1
firebase ×1
foreign-keys ×1
frameworks ×1
html ×1
html-select ×1
javascript ×1
jquery ×1
jquery-ui ×1
json ×1
mongodb ×1
php ×1
sql-server ×1
vuejs2 ×1
x-editable ×1