Привет, ребята, так что я получил к шагу 9, следуя этому обучающую программу https://www.meteor.com/tutorials/react/security-with-methodsМетеор Реагировать Учебник Прогнозной строку, есть объект
Так я написал все методы с их проверкой, однако я получаю ошибки как исключение при вызове методы «задач .remove»ошибка: матч ошибка: ожидается строка, есть объект
Вот мои письменные коды Это является tasks.js
import { Meteor } from 'meteor/meteor'
import { Mongo } from 'meteor/mongo'
import { check } from 'meteor/check'
export const Tasks = new Mongo.Collection('tasks')
Meteor.methods({
'tasks.insert' (text) {
check(text, String)
// Make sure the user is logged in before insterting a task
if (!this.userId) {
throw new Meteor.Error('not-authorized')
}
Tasks.insert({
text,
createdAt: new Date(),
owner: this.userId,
username: Meteor.users.findOne(this.userId).username
})
}, // tasks.insert
'tasks.remove' (taskId) {
check(taskId, String)
Tasks.remove(taskId)
},
'tasks.setChecked' (taskId, setChecked) {
check(taskId, String)
check(setChecked, Boolean)
Tasks.update(taskId, { $set: { checked: setChecked } })
}
})
И это Task.jsx
import React, { Component, PropTypes } from 'react'
import { Meteor } from 'meteor/meteor'
// import { Tasks } from '../api/tasks.js'
// Task component - represents a single todo item
export default class Task extends Component {
toggleChecked() {
// Set the checked value to the opposite of its current value
Meteor.call('tasks.setChecked',this.props.task._id, !this.props.task.checked)
}
deleteThisTask() {
Meteor.call('tasks.remove', this.props.task._id)
}
render() {
// Give tasks a different className when they are checked off,
// so that we can style them nicely
const taskClassName = this.props.task.checked ? 'checked' : ''
return (
<li className={taskClassName}>
<button className="delete" onClick={this.deleteThisTask.bind(this)}>
×
</button>
<input
type="checkbox"
readOnly
checked={this.props.task.checked}
onClick={this.toggleChecked.bind(this)}
/>
<span className="text">
<strong>{this.props.task.username}</strong>:{this.props.task.text}
</span>
</li>
)
}
}
Task.propTypes = {
// This component gets the task to dipslay through a React prop.
// We can use propTypes to indicate it is required
task: PropTypes.object.isRequired
}
В чем проблема с тем, что мой письменный код идентичен коду учебников, почему же я получаю эти ошибки? Я получил ту же ошибку для метода обновления.
EDIT: После того, комментируя проверки и делать более поздние этапы урока, а затем позволяя проверку заставляет их работать ... но я не уверен, какая часть из них работать
В 'tasks.remove' '' функции (TaskId) '', вы можете сделать console.log (TaskId) и посмотрите, действительно ли вы получаете объект? Кроме того, где этот '' 'taskId''' входит в контекст? – blueren
См. [Мой ответ] (http://stackoverflow.com/a/40154329/5978355) –
@DzhakharUkhaev в конце учебника он работает с проверкой (taskId, String), и если я изменю его на объект, который я получаю противоположная ошибка, которую ожидает строка –