[英]How can I insert data to my collection on my server-side main.js with meteor?
我是流星的新手,試圖修改教程代碼,我的服務器端 main.js 上有一個代碼偵聽數據包。 我還需要將控制台上打印的數據插入到我的數據庫集合中。
import { Meteor } from 'meteor/meteor';
import '/imports/api/tasks';
import { createServer } from "net";
import { Tasks } from "../imports/api/tasks"
Meteor.startup(() => {
const server = createServer(socket => {
socket.write("SEND OK")
socket.on("data", data => {
const text = data.toString();
console.log(text);
})
})
server.listen(8080)
});
這是我的導入/API 文件夾中我的數據庫的代碼。 我無法使用流星方法插入。 什么是正確的方法呢?
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);
Tasks.insert({
text,
createdAt: new Date,
owner: this.userId,
username: Meteor.users.findOne(this.userId).username
})
},
'tasks.remove'(taskId) {
check(taskId, String);
const task = Tasks.findOne(taskId);
Tasks.remove(taskId);
},
});
if (Meteor.isServer) {
Meteor.publish('tasks', function() {
return Tasks.find({
});
})
}
您的方法定義看起來不錯並且應該可以工作(包括插入到集合中)。 但是您不需要一種方法來執行服務器端功能。 由於您的套接字服務器似乎也在服務器上運行(應該如此),您可以直接從那里插入到集合中。 例如:
const server = createServer(Meteor.bindEnvironment(socket => {
socket.write("SEND OK")
socket.on("data", Meteor.bindEnvironment(data => {
const text = data.toString();
console.log(text);
Tasks.insert({
text,
createdAt: new Date
})
}))
}))
當然,由於它在服務器上運行,因此這些插入沒有“當前用戶”的概念。 你怎么知道接收到的數據是誰的? 那部分數據是否來自套接字? 一旦您知道您可以添加代碼以將其添加為方法定義中的owner
和username
,這就是我假設您想要的架構。
PS:根據評論中提到的錯誤更新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.