读nodejs项目源码所遇问题小结(一)

来源:互联网 发布:spss软件下载 官方 编辑:程序博客网 时间:2024/06/05 11:07

1.res.send和res.end的区别?

res.end:

1.方法说明:
结束响应,告诉客户端所有消息已经发送。当所有要返回的内容发送完毕时,该函数必须被调用一次。
如何不调用该函数,客户端将永远处于等待状态。

response.end([data], [encoding])

参数 作用 data end()执行完毕后要输出的字符,如果指定了 data 的值,那就意味着在执行完 response.end() 之后,会接着执行一条 response.write(data , encoding); encoding 对应data的字符编码

res.send([body|status], [body])
// 即既可以直接发送内容,也可以第一个参数状态,第二个参数内容。

如果服务端没有数据传回客户端就可以直接用red.end返回,如果有数据可以使用res.send,red.json此时可以不写res.end了,因为在前面两个方法中默认会返回


2. Mongoose 模型提供了 find, findOne, 和 findById 方法用于文档查询。


3.一些javascript函数

  1. encodeURI() 函数可把字符串作为 URI 进行编码。
  2. exec() 方法用于检索字符串中的正则表达式的匹配。返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
  3. sort() 方法用于对数组的元素进行排序。对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
  4. RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。
    new RegExp(pattern, attributes);
    参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。
    参数 attributes 是一个可选的字符串,包含属性 “g”、”i” 和 “m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。
    返回值是一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。
    如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

4.Mongoose学习杂记

  1. 名词解释
    1. Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
    2. Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
    3. Entity : 由Model创建的实体,他的操作也会影响数据库
  2. Schema、Model、Entity的关系请牢记,Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。
  3. 新增数据,如果是Entity,使用save方法,如果是Model,使用create方法

    //使用Entity来增加一条数据
    var krouky = new PersonModel({name:’krouky’});
    krouky.save(callback);
    //使用Model来增加一条数据
    var MDragon = {name:’MDragon’};

    注意
    两种新增方法区别在于,如果使用Model新增时,传入的对象只能是纯净的JSON对象,不能是由Model创建的实体,原因是:由Model创建的实体krouky虽然打印是只有{name:’krouky’},但是krouky属于Entity,包含有Schema属性和Model数据库行为模型。如果是使用Model创建的对象,传入时一定会将隐藏属性也存入数据库,虽然3.x追加了默认严格属性,但也不必要增加操作的报错

  4. 删除和新增一样,删除也有2种方式,但Entity和Model都使用remove方法


0 0