一个朋友使用vuejs构建了一个项目,我一直在寻找如何进行修复的方法,但是vuejs不是我的主要技能。
该项目是使用vuejs + vue-rx + firebase构建的。
我们有一个将项目保存到数据库的表单,正在运行。现在,我需要从firebase中获取项目数量,以构建项目名称,例如:Name #xx,其中xx是项目数量+ 1。
该表格位于route / property.NewProperty.vue中。最后定义了一个方法:
methods: {
createProperty () {
const {property, $rxFirebase: {actions: {properties}}} = this
properties.create(property).then(propertyId => this.$router.push('/properties'))
}
}
create方法在以下位置定义:actions / properties / create.js
export default function (rxfb) {
return async function (property) {
const userId = (await rxfb.sources.user.getAuth().take(1).toPromise()).uid
const propertyRef = rxfb
.database
.ref('properties')
.push()
const propertyRefRef = rxfb
.database
.ref('users')
.child(userId)
.child('properties')
.child(propertyRef.key)
await propertyRef
.update({
userId,
timestamp: {
'.sv': 'timestamp'
},
...property
})
await propertyRefRef
.set(true)
const key = propertyRef.key
return key
}
}
检查后,我看到该应用程序有一个“ sources”文件夹,其中存在一个properties.js
import _ from 'underscore'
import {Observable} from 'rxjs'
export default function (rxfb) {
return {
getProperty (propertyId) {
return rxfb.database
.ref('properties')
.child(propertyId)
.getValue()
.onValue()
.map(property => ({propertyId, ...property}))
},
getProperties () {
return rxfb.sources.user.getUser()
.switchMap(({properties}) =>
properties
? Observable.combineLatest(_(properties).map((property, propertyId) =>
this.getProperty(propertyId).map(property => ({propertyId, ...property}))))
: Observable.from([{}]))
}
}
}
在actions / properties / create.js中,我尝试添加一些代码行以读取属性计数并将其添加到名称中:
if (!property.displayName) {
var userProperties = myProperties(rxfb).getProperties().count()
property.displayName = 'Property #' + (userProperties + 1)
}
添加这些行之后,代码如下:
import myProperties from '../../sources/properties'
export default function (rxfb) {
return async function (property) {
const userId = (await rxfb.sources.user.getAuth().take(1).toPromise()).uid
const propertyRef = rxfb
.database
.ref('properties')
.push()
const propertyRefRef = rxfb
.database
.ref('users')
.child(userId)
.child('properties')
.child(propertyRef.key)
if (!property.displayName) {
var userProperties = myProperties(rxfb).getProperties().count()
property.displayName = 'Property #' + (userProperties + 1)
}
await propertyRef
.update({
userId,
timestamp: {
'.sv': 'timestamp'
},
...property
})
await propertyRefRef
.set(true)
const key = propertyRef.key
return key
}
}
但是似乎我得到的属性计数不正确,我做错了什么?