使用nodeJS和mongoDB将String推入数据库

时间:2018-12-17 09:30:24

标签: javascript node.js mongodb express mean-stack

我是JS的新手,我正在利用MEAN堆栈创建一个让学生可以在其用户个人资料中添加课程的地方。我的数据库中已经有一个会话存储,因此“ req.user”将返回当前登录的用户信息,特别是“ req.user.id”将返回当前登录的用户ID。另外,我已经找到了如何从应用程序中搜索数据库中的课程。最终,我的目标是当用户发出发布请求以在数据库中进行搜索时,我还希望将这些“值”推送到“键”类中。我提供了两个选项,这两个选项都不会将各自的字符串添加到数据库中。谢谢您的帮助!

Search.JS选项#1的一部分

import tensorflow as tf
import numpy as np

def customOps(n):
  x = tf.placeholder(tf.float32)
  v1 = tf.reduce_sum(x,1)
  v2 = tf.reduce_sum(x,0)
  v = tf.nn.softmax(tf.concat([v1, v2], 0))
  index = np.argmax(v)
  if index > n/3:
    finalval = tf.norm(v1-v2, ord='euclidean')
  else:
    finalval = tf.norm(v1+v2, ord='euclidean')
  return x, finalval

if __name__ == '__main__':
  mat = np.asarray([[0, 1], [1, 0]], dtype = np.float32)
  n = mat.shape[0]

  tf.reset_default_graph()
  x, finalVal = customOps(n)

  init = tf.global_variables_initializer()
  sess = tf.Session()
  sess.run(init)
  outVal = sess.run(finalVal, feed_dict={x:mat})
  print(outVal)
  sess.close()

Search.JS选项#2的一部分

router.post('/', ensureAuthenticated, function (req,res,next) {
    var query = {course: req.body.coursename};
    db.collection('courses').find(query).toArray()
    .then(db.collection('DefaultUser').update({_id: req.user.id}, {$push: {classes: req.body.coursename}}));
    res.render('search', {title: 'search'})
});

1 个答案:

答案 0 :(得分:0)

一些提示可能会有所帮助:

    如果您忘记使用app.use(express.urlencoded())来解析发布的数据,则
  1. req.body将不保存任何内容。
  2. 您可以使用ObjectId('<string>')(在选项#2中)查找和更新查询,而不仅仅是字符串,因为mongodb默认将_id存储为ObjectId类型。
  3. 您可以使用$addToSet而不是$push修饰符向数组添加唯一元素,或者如果一个学生重复提交表格,则可以让一个学生订阅另外两个相同的班级。
  4. li>
  5. 在您的代码中,您首先在courses集合中找到,然后进行更新,但是由于您对发现结果不做任何事情,因此没有必要(空结果不会引发任何错误)。检查数据是否有效是一种很好的做法,如果您想这样做,则在两个选项中都需要使用findOne而不是find来确保课程已经存在,并且{{1} }。

我没有您项目的完整代码,所以我只能猜测可能存在上面列出的问题,祝您好运!