你好,我正在做一个Meteor-React项目,这是一个相当新的项目。我正在尝试将新对象插入到现有的集合中,但如标题所示,它显示错误。
这是我的组件,负责在UI级别插入新项。
import React, { useState, useEffect } from "react";
import newTask from '../api/create'
export default Create = () => {
const [task, createTask] = useState('');
handleKeyPress = (event) => {
if(event.key === 'Enter'){
newTask(task)
}
}
return (
<form className="add-task" noValidate="">
<div>
<div className="fieldset add-task-input fieldset-stripped">
<div className="fieldset-content">
<label className="fieldset-label">
<span className="fieldset-label-content has-icon">
<i className="icon-plus" />
</span>
<input
className=""
name="title"
placeholder="Add new task"
type="text"
autoComplete="off"
value={task}
onChange={(e) => { createTask(e.target.value)}}
onKeyPress={this.handleKeyPress}
/>
</label>
</div>
</div>
</div>
</form>
)
}这是我尝试导出并导入到上面的组件文件中的方法。
import { Tasks } from '../../tasks';
export default newTask = (taskTitle) => Tasks.insert({
title: taskTitle,
dueDate: null,
repeat: {},
color: '#4e42c3',
status: 'incomplete',
customFields: []
})我尝试使用其他人提出的方法,如下所示,将下面的代码添加到上面的方法文件中:
Tasks.allow({
insert: function () {
return true;
}
})但它仍然不能工作,并显示相同的错误。你知道如何在Mongo集合中插入新项目吗?
发布于 2019-08-11 20:56:52
允许/拒绝正在打开security vulnerability。您可能只将其用于原型设计/模拟一些初始软件原型。
更新集合的正确方法是使用Meteor methods
服务器
import { Tasks } from '../path/to/tasks'
Meteor.methods({
'insertTask': function ({ title, dueDate, repeat, color, status, customFields }) {
return Tasks.insert({ title, dueDate, repeat, color, status, customFields })
}
})客户端
import { Tasks } from '../../tasks';
export default newTask = (taskTitle) => Meteor.call('insertTask', {
title: taskTitle,
dueDate: null,
repeat: {},
color: '#4e42c3',
status: 'incomplete',
customFields: []
})编辑:如果您只想在UI级别插入文档,并且从不在服务器上存储集合,则可以通过导出Task集合使其成为本地集合,而不使用名称:
客户端
export const Tasks = new Mongo.Collection(null)发布于 2019-08-10 23:23:56
你使用的是autopublish包吗?您正在尝试从客户端插入对象。没有autopublish包,你无法做到这一点。从服务器端添加autopublish或插入。
发布于 2019-08-11 17:25:28
所以在前面我添加了下面的代码
Tasks.allow({
insert: function () {
return true;
}
})在客户端。一旦我把它移到服务器端,它就解决了我的问题。
https://stackoverflow.com/questions/57443168
复制相似问题